Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

marcelobbt

Desabilitar checkbox

Recommended Posts

Estou criando um sistema de votação onde a pessoa pode escolher um número determinado de respostas, então queria desabilitar as checkbox ao chegar a este valor e voltar a habilitar se a pessoa desmarcar algum campo. Problema que não tenho ideia como fazer isso em javascript.

 

Segue o código abaixo:

 

<h2>Votação</h2>
<div class="row">
	<div class="col-sm-12">
		<h4><?php echo $votacao->__get('titulo'); ?></h4>
		<p>Término em <?php echo $votacao->__get('dataTermino'); ?></p>
		<p><?php echo $erro; ?></p>
		<?php echo form_open($link, array('class'=>"form-horizontal")); ?>
		<?php
			$i = 0;
			foreach ($votacao->__get('opcoes') as $opcao){
				echo '<div class="form-group">
						<label>'.$opcao.'</label>'.
						'<div class="col-sm-1">
						<input class="form-control" type="checkbox"  onkeyup="calcula()" name="opcaoform'.$i.'" id="opcao"/> '.
						'</div></div>';
				$i++;
			}
		?>
		<input type="text" name="total" id="total" value="<?php echo $total; ?>" style="display: none"/>
		<div class="form-group">
			<div class="col-sm-offset-2 col-sm-6">
				<?php echo form_submit(array('name'=>'votar'), 'Votar'); ?>
			</div>
		</div>
	</div>
</div>
<script>
	//recebe valores do PHP
	Function calcula () {
		var numeroEscolhas = "<?php echo $numeroEscolhas; ?>";
		var totalAnterior = document.getElementById('total').value;
		if () {
			//se marcou acrescenta um ao total
			var total = totalAnterior + 1;
		} else {
			//se desmarcou diminui um ao total
			var total = totalAnterior - 1;
		}
		
		if (total == numeroEscolhas) {
			//desabilita checkboxs
			document.getElementById('opcao').disabled;
		} else {
			//habilita checkboxs;
			
		}
	}	
</script>

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado aos que tentaram me ajudar. Encontrei um script antigo e fazendo uma modificações deu certo. Segue o resultado para quem quiser.

 

<script>
(function(){
	"use strict";
 
	var marcados = 0;
	var verifyCheckeds = function($checks) {
		if( marcados>="<?php echo $numeroEscolhas; ?>" ) {
			loop($checks, function($element) {
				$element.disabled = $element.checked ? '' : 'disabled';
			});
		} else {
			loop($checks, function($element) {
				$element.disabled = '';
			});
		}
	};
	var loop = function($elements, cb) {
		var max = $elements.length;
		while(max--) {
			cb($elements[max]);
		}
	}
	var count = function($element) {
		return $element.checked ? marcados + 1 : marcados - 1;
	}
	window.onload = function(){
		var $checks = document.querySelectorAll('input[type="checkbox"]');
		loop($checks, function($element) {
			$element.onclick = function(){
				marcados = count(this);
				verifyCheckeds($checks);
			}
			if($element.checked) marcados = marcados + 1;
		});
		verifyCheckeds($checks);
	}
}());
</script>

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por helkton
      iai galera, tenho uma pendenga e não consigo achar nada pra suprir minha dúvida rsss
      seguinte....
       
      Tenho um cardápio Online onde tenho os devidos ITENS sendo abertos em uma janela modal e nesta janela tenho os devidos ITENS EXTRAS em um checkbox que o usuario clicam e adicionam
      esta é minha lista de ADICIONAIS EXTRAS QUE PEGO DO BANCO DE DADOS 
       
      <label style="border:0px red solid;font-size:1em;width:90%;text-align:left;padding:0px;margin-left:2em;" onclick="somar()"> <input style="height:23px;width:23px;cursor:pointer" type="checkbox" class='limited<?php echo $resultExtrasDelivery->idExtraDelivery?>' id="valorItemExtra" name="idExtraSelects[]" value="<?php echo $resultItensExtras->valorItemExtra?>" > <span style="cursor:pointer"><?php echo $resultItensExtras->nomeItemExtra?> <span style="font-size:0.7em;color:#DD2C00"> <small> <?php if($resultItensExtras->valorItemExtra == '0.00'){echo'';}else{echo '+R$ '.$resultItensExtras->valorItemExtra.'<input type="text" value="'.$resultItensExtras->valorItemExtra.'">';}?></small> </span> </span> </label> ela vem tipo assim
      AcréscimoTradicional - Escolha até 3 opções
      BACON 1,00
      CALABRESA 1,00
      MUSSARELA 1,00
      PRESUNTO 1,00
      OVO 1,00
       
      o que quero fazer é somente somar os itens clicados pelo usuario e somar com o TOTAL DO ITEM 
      tipo pegar o total do item tipo R$30,00 e ir somando com os acrescimos escolhidos
       
      <script> function somar() { // var valorItem = document.getElementById('valorItemExtra').value; var checkbox = document.getElementById('#valorItemExtra'); var total = 0; if(checkbox.checked == true){ total += checkbox.value; } document.getElementById('somar').innerHTML = total; } </script>  
    • Por Sapinn
      Salve! Não consigo verificar se o checkbox foi marcado, isso não faz o menor sentido porquê aparentemente eu fiz tudo certo.
       
      HTML:
       <div class="mt-4 mb-3 row ">                 <label class="label_checkbox">Adicionar customização                   <input type="checkbox" id="checkbox" name="custom_shirt">                   <span class="checkmark"></span>                 </label>               </div>  
      JAVASCRIPT:
       let checkedCustomize = document.getElementById("checkbox");  if(checkedCustomize.checked){     alert("Checkbox marcado");  }else{      console.log("checkbox não marcado");  }  
    • Por Caio Vargas
      Meus amigos estou com um problema que não consigo resolver as vezes e coisas simples mais não encaixa na minha cabeca eu tenho multiplos checkbox onde cada um tem o valor porem eu tô salvando isso em uma tabela única separado por vírgula não sei se isso e correto mais na hora de recuperar e colocar como checado não vai pq ele retorna os valores tudo jundo mesmo dando um explode não vai 
    • Por tony_lu
      Olá pessoal quero colocar um campo checkbox de aceito os termos de uso, mas não estou conseguindo validar este campo para enviar
      o form apenas se este campo por marcado podem me ajudar?
    • Por carlosmassam
      Bom dia a todos. Eu tenho o seguinte código em HTML
      <input type="checkbox" id="checkmarcacao1" name="checkmarcacao1" value="checkmarcacao1"> <input type="time" id="hora101" name="hora101" disabled="disabled"> E tenho o seguinte código em Javascript
      <script src="https://code.jquery.com/jquery-3.4.1.min.js"></script> <script> $(document).ready(function () { $('input[name=checkmarcacao1]').change(function() { if ($(this).is(':checked')) { $('input[name=hora101]').removeAttr('disabled'); } else { $('input[name=hora101]').attr('disabled',true); } }); }); </script> Esse meu código em Javascript faz o seguinte: Quando meu Checkbox está marcado, ele habilita o input time. Se eu desmarcar o checkbox, o input time é desabilitado.
      Acontece que se eu marcar o checkbox, escrever no input time, por exemplo: 12:34, depois desmarcar o checkbox o  input time fica desabilitado porém o valor 12:34 ainda fica escrito nele.
      Eu gostaria de saber como apagar o valor do input time quando o checkbox estiver desmarcado. 
       
      Quem quiser testar o código segue o link: https://jsfiddle.net/o8f3zvqu/
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.