Comment soumettre la valeur 1 si une case à cocher dans un tableau de cases à cocher est cochée, et soumettre 0 si elle n'est pas cochée? J'ai essayé mais pas de chance. J'essaye de saisir ce tableau dans un tableau php lorsque le formulaire est soumis. Aidez-moi!

<input id = 'testName0' type = 'checkbox' name = 'check[0]' value = '1' checked>
<input id='testNameHidden0'  type='hidden' value='0' name='check[0]'>

<input id = 'testName1' type = 'checkbox' name='check[1]' value = '1' unchekced>
<input id='testNameHidden1'  type='hidden' value='0' name='check[1]'>

<input type = 'submit' value = 'Save Changes'>
>
<script>
if(document.getElementById('testName0').checked){
  document.getElementById('testNameHidden0').disabled = true;
}
</script>

<script>
if(document.getElementById('testName1').checked){
  document.getElementById('testNameHidden1').disabled = true;
}
</script>
27
Rishabh Gusain 12 juil. 2015 à 14:07

3 réponses

Meilleure réponse

Le plus simple, aucun javascript requis, il suffit de mettre une entrée cachée avant la case à cocher:

<input type="hidden" name="check[0]" value="0" />
<input type="checkbox" name="check[0]" value="1" />

Les entrées doivent avoir le même nom. Si la case est cochée, la valeur 1 sera soumise, sinon la valeur 0 de l'entrée cachée.

Votre cas solution javascript , aucune entrée cachée nécessaire:

<script type="text/javascript">
    // when page is ready
    $(document).ready(function() {
         // on form submit
        $("#form").on('submit', function() {
            // to each unchecked checkbox
            $(this + 'input[type=checkbox]:not(:checked)').each(function () {
                // set value 0 and check it
                $(this).attr('checked', true).val(0);
            });
        })
    })
</script>

<form method="post" id="form">
    <input type="checkbox" name="check[0]" value="1" />
    <input type="checkbox" name="check[1]" value="1" />
    <input type="submit" value="Save Changes" />
</form>

Solution PHP , aucune entrée cachée n'est requise:

<?php
    // if data is posted, set value to 1, else to 0
    $check_0 = isset($_POST['check'][0]) ? 1 : 0;
    $check_1 = isset($_POST['check'][1]) ? 1 : 0;
?>

<form method="post">
    <input type="checkbox" name="check[0]" value="1" />
    <input type="checkbox" name="check[1]" value="1" />
    <input type="submit" value="Save Changes" />
</form>
47
JungleZombie 7 oct. 2017 à 07:49

Eh bien, j'ai un code beaucoup plus simple qui a bien fonctionné pour moi:

<input type="checkbox" value="true" id="checkBox">

Ensuite, le code JQuery:

var checkBoxValue = $('#checkBox').is(':checked')?$('#checkBox').val():false

J'ai utilisé un opérateur ternaire pour définir la valeur sur une condition cochée et non cochée.

0
Abhi Das 30 oct. 2019 à 06:08

Une meilleure solution qui a résolu cela pour moi.

Problème: les messages cachés et vérifiés étaient envoyés à mon serveur.

Solution:

if len(key) == 1 {
  value = false
} else {
  value = true
}

De cette façon, si len (clé) est 1, je sais que seul le champ caché était en cours d'envoi. Tout autre scénario signifie que la case est cochée. Simple et facile.

0
cmshnrblu 1 févr. 2020 à 01:44