如果未选中复选框,如何提交 0,如果在 HTML 中选中复选框,如何提交 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>

原文由 Rishabh Gusain 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 309
2 个回答

最简单的一个, 不需要 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 解决方案不再有效。基于 ,更合适的解决方案如下:

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

原文由 JungleZombie 发布,翻译遵循 CC BY-SA 4.0 许可协议

一个更好的解决方案为我解决了这个问题。

问题:隐藏的和选中的都发送到我的服务器。

解决方案:

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

这样,如果 len(key) 是 1 我知道只有隐藏字段被发送。任何其他情况都意味着该框已选中。简单易行。

原文由 cmshnrblu 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题