同时过帐选中和取消选中的复选框

2022-02-23 00:00:00 checkbox jquery php webforms

我正在尝试在一个web表单中创建一系列复选框,根据它们是否被选中,它们会将"true"或"false"发布到下一个php页面。我决定对于每个复选框(value="true"),我都会有一个隐藏的复选框(value="false"),它总是相反的(当复选框被选中时,隐藏复选框被取消选中,依此类推)。我正在使用jQuery执行此操作。

‘td’元素的数量未知(‘td’可以使用一个按钮复制无限次,以提交多个值)。出于测试目的,我将警报添加到jQuery。

当我将jQuery代码和隐藏复选框添加到源代码中时(出于测试目的,我将其设置为可见),代码将无法工作,我网页上的所有其他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:

<td>
    <input type="checkbox" class="required" name="required[]" value="true">
    <input type="checkbox" class="required" name="required[]" value="false" style="display: none;" checked>
</td>

解决方案

您不必隐藏其中一个复选框。这里有一个解决方案,可以实现您想要的功能:

<input type="hidden" name="required" value="false" />
<input type="checkbox" name="required" value="true" />
如果未选中该复选框,则隐藏字段将与false值一起提交。如果选中该复选框,则复选框中的true值将覆盖隐藏输入中的false值。

只要您能为每个复选框命名稍有不同,它就应该可以工作。

以下内容应该也适用于值数组:

<input type="hidden" name="required[0]" value="false" />
<input type="checkbox" name="required[0]" value="true" />

<input type="hidden" name="required[n]" value="false" />
<input type="checkbox" name="required[n]" value="true" />

这样,您不需要任何客户端javascript来切换隐藏的复选框。

相关文章