Jump to content
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>

 

 

Share this post


Link to post
Share on other 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>

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By lezão
      Boa tarde, galera!
      Td bem com vcs?
       
      Estou precisando de um UPDATE que qnd eu seleciono o checkbox e clico no botão submit ele chama para a pagina que ira fazer a alteração.
      Tenho um exemplo só que  em asp, vejam abaixo:
      Imagem UPDATE
       
      espero ter explicado certo.
       
      obrigado!
       
    • By helkton
      Boa galera estou com um B.O aqui, seguinte....
       
      Tenho uma janela MODAL com itens do cardápio que será escolhido pelo cliente.
      Cada item que o cliente escolhe abro uma janela MODAL com os itens extras disponíveis ele clica nos devidos itens extras que ele quiser adicionar ao pedido até aqui tudo bem já consegui esta abrindo normal tudo certinho os itens com os itens extras disponíveis, porem como somar os itens extras juntamente com o valor do ITEM PEDIDO, tipo, o cardápio do estabelecimento possui 4 itens
      X-TUDO - R$ 15,00 X-FRANGO - R$ 12,00 X-BACON - R$ 13,00 X-SALADA - R$ 10,00 AGORA em cada item selecionado existe os itens extras que o cliente pode escolher como adicional tipo:
       
      CALABRESA - R$ 1,00 FRANGO - R$ 1,00 BACON - R$ 1,00 PRESUNTO - R$ 1,00 MUSSARELA - R$ 1,00 Então como somar esses itens extras selecionados ao valor do item pedido, tipo o usuário escolhe o X-TUDO - R$15,00 - - - -  Abro uma janela MODAL com os itens extras disponíveis e o usuário escolhe os itens extras CALABRESA + BACON + MUSSARELA 
      e vai somando ao valor do item ( R$15,00 + 1,00 + 1,00 + 1,00 ) = R$18,00
       
      Tenho esta estrutura....
      <script> $(document).ready(function() { calcTotal(); var limpaValor = ""; document.getElementById("zerarValor").innerHTML = limpaValor; document.getElementById("check").checked = false; $('.price-variant, .price-variant-text').change(function() { calcTotal(); }); $('.price-variant-text').keyup(function() { calcTotal(); }); }); function calcTotal() { var total = 0; $('.price-variant').each(function() { var isChecked = $(this).is(':checked'); if(!!isChecked) { total += Number($(this).val()); } }); $('.price-variant-text').each(function() { total += Number($(this).data('unitprice')) * Number($(this).val()); }); $('.total').text('R$ ' + total.toFixed(2)); } </script> porém não consigo fazer ele zerar o valor total a cada MODAL e nem os checkboxes marcados aberto.
      Tipo eu escolho o X-TUDO e marco os itens extras (CALABRESA + BACON + MUSSARELA) agora quando abro o outro item(outra janela modal) X-FRANGO os valores marcados anteriormente estão sendo somados
    • By carlosmcarpes
      Fala galera!
       
      Estou quebrando a cabeça aqui, preciso de uma ajuda. Meu objetivo com o checkbox, que está dentro do loop while, é permitir que o usuário selecione vários ítens(marcando o checkbox), para que eles possam ser deletados ao mesmo tempo no banco de dados.Só que quando mando imprimir o que está vindo do checkbox recebo:  Array ( [0] => nome_a  nome_b  nome_c, ou seja, os 3 ítens que foram selecionados no checkbox estao vindo no mesmo índice do array. Como faço para obter como resultado um nome em cada índice?Ex: Array ([0]=> nome_a,     [1]=> nome_b,    [2]=> nome_c).
       
      <?php
      $conn = new mysqli("localhost","root","","motor");
      if($conn->connect_error){
          echo "Error:".$conn->connect_error;
      }
      $data = array();
      $result = $conn->query("select * from usuario");
      echo "<form method='post' action='usuario.php'>
      <table>
          <thead>
              <tr>
                  <th>Nome</th>
                  <th>Senha</th>
                  <th>Email</th>
                  <th>Permissão</th>
                  <th>Status</th>
                  <th>Data</th>
              </tr>
          </thead>
          <tbody>";
      while ($row = $result->fetch_assoc()) {
          
          echo "<tr>
                      <td>".$row['nome']."</td>
                      <td>".$row['senha']."</td>
                      <td>".$row['email']."</td>
                      <td>".$row['permissao']."</td>
                      <td>".$row['status']."</td>
                      <td>".$row['data']."</td>
                      <td><input type='checkbox' name='user[]' value=".$row['nome']."</td>
                  </tr>";
      }
      echo "
          </tbody>
      </table>
      <input type='submit' value='enviar'>
      </form>";
      print_r($_POST['user']);
       ?>
    • By FERREIRA FILHO
      Estou tentando fazer um update de vários registros com checkbox, mais não está atualizando no banco de dados MySQL. Segue o meu código, desde já agradeço!
       
      <?php 
      include_once("../config/conexao.php");

      $nivel = $_SESSION['nivel'];
         
      if ($_SESSION['nivel'] == 4)
          {
      $sql = "SELECT ID, NOME, VOLUNTARIO FROM cidadao ORDER BY NOME";
      $res = mysql_query($sql) or die (mysql_error() );
      if (mysql_num_rows($res) > 0 )
      echo '<form method="post">';
      ?>
      <table width="431" border="0" align="center" cellpadding="0" class="bordaFina">
          <tr bgcolor="#999999" >
            <td width="302" align="center" valign="middle" bgcolor="#F0F0F0" class="style27">Nome  </td>
            <td width="123" align="center" valign="middle" bgcolor="#F0F0F0" class="style27">Voluntário</td>
          </tr>
          <?php
      while ($row = mysql_fetch_assoc($res))
          {     
          ?>
          <tr >
            <td><?php echo $row["NOME"];?></div></td>
        <td ><div align="center"> 
       <input type="checkbox" name= "VOLUNTARIOS[<?php  $row["ID"] ?>]" value="1" <?php if($row["VOLUNTARIO"] == 1){ echo "checked";} ?>> 
       <input type="hidden" name= "VOLUNTARIOS[<?php $row["ID"] ?>]" value="0" <?php if($row["VOLUNTARIO"] == 0){ echo ""; }  ?>>
        </div></td>
        </tr>
          <?php 
        }  //End While
        ?>
      </table>
        
      <p><div align="center"><?php echo '<input type="submit"name= "submit" value= "Salvar">';?></div>
        <?php
      if (isset ($_POST["submit"]))
      {        
              foreach($_POST['VOLUNTARIOS'] as $ID => $VOL) 
                {mysql_query("update cidadao SET VOLUNTARIO ='$VOL' WHERE ID='$ID'")or die(mysql_error()); }                    
                 echo "<meta HTTP-EQUIV='refresh' CONTENT='1;URL=teste.php'>";
      }
      ?>
      <?php
      echo'<br>';
      echo '</form>';
      }//endif
      ?>
       

    • By Diego-SLP
      Boa tarde,
       
      Gostaria de uma ajuda pra elaborar uma tela do meu sistema, existem registros no banco o qual uma pessoa cadastra e depois a outra vai atualizando preços, porém é muito cansativo editar um por um, gostaria de trazer estes registros na tabela de busca e apos marcaro checkbox o campo virar editavel, assim marcaria X campos, colocaria o valor deles e executaria o update dos mesmos, ou, se voces tiverem uma logica mais facil eu aceito kkk
       
      Obrigado
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.