web-dev-qa-db-fra.com

Valeur de la case à cocher true / false

J'ai un formulaire avec une case à cocher et je veux le garder coché après avoir soumis le formulaire lorsqu'il revient à la même vue avec une erreur. J'ai entendu dire que l'attribut value peut m'aider à cocher la case à cocher, alors j'essaie de le définir sur true/false. Quoi qu'il en soit, la valeur d'entrée reste "false" même si je clique dessus. Qu'est-ce qui se passe exactement? Je pensais que la valeur allait vrai/faux après avoir cliqué sur la case à cocher

<input type="checkbox" name="acceptRules" class="inline checkbox" id="checkbox1" value="false">

      <script>
          $("#checkbox1").is(':checked', function(){
              $("#checkbox1").attr('value', 'true');
          });
      </script>
14
divHelper11

Si je comprends la question, vous souhaitez modifier la valeur de la case à cocher en fonction de son activation ou non.

Voici une solution:

$('#checkbox-value').text($('#checkbox1').val());

$("#checkbox1").on('change', function() {
  if ($(this).is(':checked')) {
    $(this).attr('value', 'true');
  } else {
    $(this).attr('value', 'false');
  }
  
  $('#checkbox-value').text($('#checkbox1').val());
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>


<input type="checkbox" name="acceptRules" class="inline checkbox" id="checkbox1" value="false">

<div id="checkbox-value"></div>
23
Bojan Petkovski

Utilisez Checked = true

$("#checkbox1").prop('checked', true);

Remarque: Je ne sais pas si vous voulez cocher/cocher un événement onchange/onchange. is(":checked", function(){}) est un problème dans la question.

5
Aju John

Essaye ça

$("#checkbox1").is(':checked', function(){
  $("#checkbox1").prop('checked', true);
});
      
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="checkbox" name="acceptRules" class="inline checkbox" id="checkbox1" value="false">
2
Jitendra Tiwari

Les cases à cocher peuvent être vraiment bizarres dans JS. Vous feriez mieux de vérifier la présence de l'attribut checked. (Des versions jQuery plus anciennes renvoient true même si checked est défini sur 'false'.) Une fois que vous avez déterminé que quelque chose est coché, vous pouvez obtenir la valeur de l'attribut value. .

1
Michael Ambrose

jQuery.is() la fonction n'a pas de signature pour .is('selector', function).

Je suppose que vous voulez faire quelque chose comme ça:

      if($("#checkbox1").is(':checked')){
          $("#checkbox1").attr('value', 'true');
      }
1
Uzbekjon

Je vais poster cette réponse sous les hypothèses suivantes. 1) You (un)selected the checkbox on the first page and submitted the form. 2) Your building the second form and you setting the value="" true/false depending on if the previous one was checked. 3) You want the checkbox to reflect if it was checked or not before.

Si tel est le cas, vous pouvez faire quelque chose comme:

var $checkbox1 = $('#checkbox1');
$checkbox1.prop('checked', $checkbox1.val() === 'true');
1
Taplar