我在一个注册表单中使用复选框来切换一些多列表的启用和禁用状态。复选框上标有该类别,而多列表包含属于该类别的项目。
我正在使用jQuery 1.7.2。
$('#sch_cat_hockeyschools').toggle(function(ev) {
ev.stopPropagation();
$("#type_select_hockeyschools").prop("disabled", false);
$("#type_select_hockeyschools").removeProp("disabled", "disabled");
$("#sch_cat_hockeyschools").prop("checked", true);
$("#sch_cat_hockeyschools").prop("checked", "checked");
}, function(ev) {
ev.stopPropagation();
$("#type_select_hockeyschools option:selected").removeAttr("selected");
$("#type_select_hockeyschools").prop("disabled", true);
$("#type_select_hockeyschools").prop("disabled", "disabled");
$("#sch_cat_hockeyschools").prop("checked", false);
$("#sch_cat_hockeyschools").removeProp("checked");
});
对应复选框HTML示例:
<input class="catmark" type="checkbox" name="sch_categories[]" id="sch_cat_hockeyschools" value="1" />General Hockey Schools
<input class="catmark" type="checkbox" name="sch_categories[]" id="sch_cat_springhockey" value="2" />Spring Hockey
问题在于点击复选框后,它没有被选中或勾选;它立即返回到未选中状态,我认为
stopPropagation()
函数会有帮助。但是显然不行。多个列表如预期一样启用和禁用,但复选框未被选中。这个问题的结果是当表单提交时,包含所选类别的数组为空;因此,由于至少一个选定的类别是表单中必填字段之一,在处理表单的 PHP 脚本中会引发我的错误之一,告诉我必填字段已留空。
有什么想法确保复选框实际被选中,并通过扩展,将实际数据POST到处理脚本吗?
谢谢大家。