我发现(伴随着大量的痛苦)如果我们从以下开始:
<input type="checkbox" checked="checked" id="cb1" name="some-name" value="some-value"/>
然后在某些事件下使用 jQuery:
$('#cb1').prop('checked', false);
该复选框确实失去了它的复选标记,但是,当提交相应的表单时,该复选框仍然是表单数据的一部分,它是一个“成功的控件”。
使复选框“不成功”(并阻止其提交到服务器)的唯一方法是:
$('#cb1').removeAttr('checked');
有没有办法使用 jQuery(或 javascript)使复选框不“成功”?这样就不会提交到服务器。
谢谢。
最佳答案
该请求将发送所有数据,包括复选框,因此如果选中,您将收到该值,如果未选中,您将收到 null 或空。您需要在服务器端处理它。
<input type="checkbox" name="cb" value="yeah">
// server if checked
$_POST['cb'] === yeah
// server if not checked
$_POST['cb'] === empty
所以你不需要这样的控制
isset($_POST['cb'])
你需要这个
!empty($_POST['cb'])
我认为这是 PHP,但在所有语言中都是相同的。
祝你好运
关于javascript - 使用jQuery取消选中,但复选框仍被视为 'successful control'并提交,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32611741/