复选框检查验证

checkbox checking verification

本文关键字:验证 检查 复选框      更新时间:2023-09-26

HTML:

<div>
    <input>
    <label>
</div>

JS:

$('div input').live('click',function(){
    alert($(this).is(':checked'));
});
$('div').live('click,'function(e){
    if(!$(e.target).is('input'))
        $(this).find('input').click();
});

每当我点击输入时,它都会准确地显示输入的结果(如果我打开输入,它会提醒true(
但每当我点击div/标签时,它就会反其道而行之(当输入打开时,它会提醒false(

有没有一种方法可以测试输入是否在两种情况下都打开和关闭,而不是1

[我认为发生这种情况的原因是,一个是由浏览器触发的,它发生在jquery之前(尽管我认为jquery应该首先发生,但不管怎样(,而在另一种情况下,jquery在"已检查"的触发器之前运行,但似乎不知道如何将触发器延迟到脚本之后,或强制它在脚本之前运行。]

提前感谢!

您可以在复选框本身上监视change(),然后单击div可以直接更改复选框中的值,然后触发change()而不是click()

$('input[type="checkbox"]').live('change',function(){
    alert($(this).is(':checked'));
});
$('div').live('click',function(e){
    if(!$(e.target).is('input')) {
        var $input = $(this).find('input');
        $input.prop("checked", !$input.is(':checked')).change();
    }
});

此外,如果您的目的是避免整个<label for="" />烦恼,请查看此项。

<label><input type="checkbox" value="awesome" /> Check it</label>

试试这个:

$('div input').live('click',function(){
    alert($(this).is(':checked'));
});
$('div').live('click,'function(e){
    if(!$(e.target).is('input'))
        $(this).find('input').triggerHandler("click");
});