javascript - 如果未选中复选框,如何提交 0,如果在 HTML 中选中复选框,如何提交 1

标签 javascript php html forms checkbox

<分区>

如果选中复选框数组中的复选框,如何提交值 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>

最佳答案

最简单的一个,不需要 javascript,只需在复选框前放置一个隐藏的输入:

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

输入必须具有相同的名称。如果选中该复选框,则将提交值 1,否则将提交来自隐藏输入的值 0。

您的案例 javascript 解决方案,无需隐藏输入:

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

编辑:自 jquery 1.6 起,javascript 解决方案不再有效。基于this ,更合适的解决方案如下:

<script type="text/javascript">
    // when page is ready
    $(document).ready(function() {
         // on form submit
        $("#form").on('submit', function() {
            // to each unchecked checkbox
            $(this).find('input[type=checkbox]:not(:checked)').prop('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>

关于javascript - 如果未选中复选框,如何提交 0,如果在 HTML 中选中复选框,如何提交 1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31367098/

相关文章:

javascript - 查看不应该更新的时候

javascript - 填写完所有 Google 输入字段后发出 'hi' 警报

javascript - 如何使用 hapi.js 在同一台服务器上支持多个网站?

php - 关于如何修复现有数据库中的 unicode、语言问题的建议

php - Symfony2 形式转 JSON 结构

javascript - 获取所有选定的值()'s from a multiselect container per it'自己点击:event?

php - 将 MySQL 计数添加到 PHP 数组值中

javascript - 如何使用 JQuery 选择容器元素内的第一个 div 元素?

javascript - 在 Javascript 中访问表格单元格的内容

html - Flexbox列方向同宽