单击一个复选框时,我会在表单上运行一些验证,这可以按预期工作。
$('#ilikeicecream').click(function(){
runValidation();
});
该复选框还有一个标签元素,所以我也需要检查它。我的第一直觉是做以下事情:
$('#ilikeicecream-label').click(function(){
runValidation();
});
问题是此时尚未检查复选框,因此验证无法按预期工作。我怎么能绕过这个?
答案 0 :(得分:2)
这对你有用......
$('#ilikeicecream').change(function(){
runValidation();
});
$('#ilikeicecream-label').click(function(){
if($('#ilikeicecream').attr('checked')){
$('#ilikeicecream').attr('checked', false);
}
else{
$('#ilikeicecream').attr('checked', true);
}
runValidation();
});
答案 1 :(得分:1)
使用<label>
标记包装复选框。当您单击标签时,复选框将自动更改,从而触发change
事件,您可以在其中调用runValidation()
函数。
<label><input type="checkbox" value="1" id="blahblah" name="myname" /></label>
并将.change
处理程序保留在复选框上(您的标签不需要单独的处理程序)...
答案 2 :(得分:0)
使用change():
$('#ilikeicecream').change(function(){
runValidation();
});
对于选择框,复选框和单选按钮,会触发该事件 当用户使用鼠标进行选择时,立即进行 事件的其他元素类型延迟到元素丢失 对焦。
我已经在jsFiddle中使用以下代码进行了测试。我无法提供链接,因为jsfiddle目前正在关闭。
<label for="ilikeicecream">sdsd</label><input id="ilikeicecream" type="checkbox" />
$('#ilikeicecream').change(function(){
alert("test");
});
如果这不起作用,您可能未在for
中指定label
属性以匹配input
。
答案 3 :(得分:0)
$('#ilikeicecream-label').click(function(){
// Swap the checked property value of the check box here
runValidation();
})