Php 过帐选中和未选中复选框
我正在尝试在web表单中创建一系列复选框,根据是否选中它们,将“true”或“false”发布到下一个php页面。我决定,对于每个复选框(value=“true”),我将有一个隐藏的复选框(value=“false”),它总是相反的(当复选框被选中时,隐藏的复选框被取消选中等等),我使用jQuery来实现这一点 “td”元素的数量未知(“td”可以使用按钮无限次克隆,以提交多个值)。出于测试目的,我将警报添加到jQuery中 当我将jQuery代码和隐藏复选框添加到源代码中时(为了测试目的,我将其设置为可见),代码无法工作,我网页上的所有其他jQuery都停止工作 jQuery代码:Php 过帐选中和未选中复选框,php,jquery,checkbox,webforms,Php,Jquery,Checkbox,Webforms,我正在尝试在web表单中创建一系列复选框,根据是否选中它们,将“true”或“false”发布到下一个php页面。我决定,对于每个复选框(value=“true”),我将有一个隐藏的复选框(value=“false”),它总是相反的(当复选框被选中时,隐藏的复选框被取消选中等等),我使用jQuery来实现这一点 “td”元素的数量未知(“td”可以使用按钮无限次克隆,以提交多个值)。出于测试目的,我将警报添加到jQuery中 当我将jQuery代码和隐藏复选框添加到源代码中时(为了测试目的,我将
$(document).ready(function(){
/***post all 'required' checkboxes instead of just checked ones***/
$(".required").click(function(event){
event.preventDefault();
alert("test");
nextIndex = this.index() + 1;
alert(nextIndex);
$(".required:eq(nextIndex)").attr("checked", !.required:eq(nextIndex).attr("checked"));
});
});
HTML:
这一行可能会导致某些东西损坏:
$(".required:eq(nextIndex)").attr("checked", !.required:eq(nextIndex).attr("checked"));
你可能是说:
$(".required:eq(" + nextIndex + ")").attr("checked", !$('.required:eq(' + nextIndex + ')').attr("checked"));
还要注意,您需要从引号中去掉nextIndex
我猜您的javascript控制台可能会抛出与此相关的某种错误
编辑:
我注意到的另一个错误是:
nextIndex = this.index() + 1;
.index()
是一个必须在jquery对象上调用的jquery函数这是单击的元素,因此您需要说:
nextIndex = $(this).index() + 1;
顺便说一句,你可能想看看它能帮你摆脱这一切nextIndex
mumbo-jumbo 您不必隐藏其中一个复选框。以下是一个解决方案,可以实现您的目标:
<input type="hidden" name="required" value="false" />
<input type="checkbox" name="required" value="true" />
这样,您就不需要任何客户端javascript来切换隐藏的复选框。如果您这样命名复选框,则不必使用索引:
<input type="checkbox" name="checkbox_name[]" />
这将遍历所有未选中的复选框,检查它们,并将其值设置为false
。以下是您在PHP中获得的内容:
[checkbox_name] => Array
(
[0] => off
[1] => on
[2] => off
)
而不是:
[checkbox_name] => Array
(
[0] => on
)
是的,解决方案是在每个复选框之前输出一个隐藏的元素,并带有复选框的“off”值。选中复选框会导致“打开”值而不是隐藏输入的值被发布。这是一个很好的解决方案,但是我不知道会有多少复选框。。。我将查看是否可以找到一种方法,在使用我的网页上的按钮添加它们时自动命名它们。只要在复选框元素之前添加一个与DOM中的复选框同名的隐藏输入,只要每个复选框都有一个同名的隐藏输入,该方法就可以工作。如果隐藏输入意外地作为复选框后的节点添加到DOM中,则会产生相反的效果,并且该值将始终为false(隐藏输入的值)。今天偶然发现了这一点,必须让您知道这是一个出色的解决方案。它是如此干净,易于实施!!喜欢学习这样的行业技巧。这是我见过的最好的解决方案,所以这听起来像是一份更适合单选按钮而不是复选框的工作。我页面上的另一个jQuery现在正在工作,所以我也很关心我遇到的语法错误-谢谢!然而,它仍然没有按照我希望的方式工作。当我单击复选框时,我会看到第一条警报消息,但不会看到第二条,然后复选框会再次取消选中。隐藏复选框不会发生任何变化(它保持选中状态)。
$('form').submit(function(){
$(":checkbox:not(:checked)").each(function(element, index){
$(this).attr({value: 'false', checked:'checked'});
});
return true;
});
[checkbox_name] => Array
(
[0] => off
[1] => on
[2] => off
)
[checkbox_name] => Array
(
[0] => on
)