web-dev-qa-db-ja.com

チェックボックスがチェックされていない場合は0を送信し、チェックボックスがチェックされている場合は1を送信する方法

チェックボックス配列のチェックボックスがチェックされている場合に値1を送信し、チェックされていない場合に0を送信する方法私はこれを試しましたが、運はありませんでした。フォームの送信時に、この配列をphp配列で取得しようとしています。助けてください!

<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>
16
Rishabh Gusain

最も単純なもの、javascriptなしは必須です。チェックボックスの前に非表示の入力を置くだけです:

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

入力には同じ名前を付ける必要があります。チェックボックスがオンの場合、値1が送信されます。それ以外の場合、非表示の入力から値0が送信されます。

あなたの場合javascript solution、隠された入力は必要ありません:

<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>

PHPソリューション、非表示の入力は不要:

<?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>
43
JungleZombie