我试图确保组中至少有一个复选框始终保持选中,但我遇到了困难。
我有多个复选框,其名称以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;
}发布于 2013-05-15 07:45:23
value.is(':checked')不能工作的原因是,在循环中,value作为原始DOM对象传递。.is()是一个jQuery方法,因此您必须将value包装在jQuery对象中才能使用它:
$(value).is(':checked')
发布于 2013-05-15 07:38:05
试着这样做:
$(checks).each(function(key, value){
if($(this).is(':checkbox') && $(this).is(':checked')){
checked = true;
}
});发布于 2013-05-15 07:38:25
在循环中使用$(this)而不是value
$(checks).each(function(key, value){
if($(this).is(':checkbox') && $(this).is(':checked')){
checked = true;
}
});https://stackoverflow.com/questions/16559313
复制相似问题