检查是否选中了复选框时,错误'value.is不是函数'

时间:2013-05-15 07:35:23

标签: jquery checkbox

我正在努力确保群组中至少有一个复选框始终处于检查状态,但我遇到了困难。

我有多个名称以post_type[开头的复选框。该函数运行on('change')调用就好了,当我检查输入是否是选中的复选框时出现问题,我得到以下错误。

  

value.is不是函数

有人可以帮我解决我的代码问题吗?感谢。

$(document).ready(function($){

    $('input[name^="post_type["]', '#site-search').on('change', function(){

        var checks = $('input[name^="post_type["]');
        var one_checked = is_one_checked(checks);

        if(one_checked === false){
            $(this).attr('checked', 'true');
        }

    });

});

function is_one_checked(checks){

    var checked = false; // Wheteher or not at least one box is checked (false by default)

    $(checks).each(function(key, value){
        if(value.is(':checkbox') && value.is(':checked')){
            checked = true;
        }
    });

    return checked;

}

4 个答案:

答案 0 :(得分:1)

试试这样:

 $(checks).each(function(key, value){
    if($(this).is(':checkbox') && $(this).is(':checked')){
        checked = true;
    }
});

答案 1 :(得分:1)

在循环中使用$(this),而不是value

$(checks).each(function(key, value){
    if($(this).is(':checkbox') && $(this).is(':checked')){
        checked = true;
    }
});

答案 2 :(得分:1)

value.is(':checked')不起作用的原因是因为在循环中,value作为原始DOM对象传递。 .is()是一个jQuery方法,因此您必须将value包装在jQuery对象中才能使用它:

$(value).is(':checked')

答案 3 :(得分:0)

在你的html中指定attr checked =“checked”,然后为什么不使用.attr:

if($(this).attr('type') == 'checkbox' && $(this).attr('checked') == 'checked'){
        $(this).attr('checked','checked')
    }