2013-07-05 118 views
1

检查我有两个输入复选框,我想检查/使用jQuery取消勾选:设置复选框与jQuery的

<input type="checkbox" name="user1" value="1" id="u1" onclick="loadUserCalendar(1)"> 
<input type="checkbox" name="user2" value="2" id="u2" onclick="loadUserCalendar(2)"> 

JavaScript代码:

var list = new cookieList("calendar_users"); 
var users = list.items(); 
for (var i = 0; i < users.length; i++) { 
    $('input[name="user' + users[i].substr(1,1) + '"]').attr('checked', true); 
    console.log('substring: ' + users[i].substr(1,1)); 
    console.log('enabling user ' + users[i]); 
} 

var users包含以下值:u1,u2。为了仅获取用户标识,我执行了一个子字符串,它可以获取正确的编号,如下面在控制台输出中所示。

控制台输出:

substring: 1 
enabling user u1 
substring: 2 
enabling user u2 

我不知道,为什么当代码运行的复选框不检查。我在这里做错了什么?

编辑:我使用jQuery 1.4.4由于兼容性的原因,这就是为什么我使用.attr()

回答

2

内联事件处理程序(onclick="loadUserCalendar(1)")不是jQuery方式。你不应该有任何在你的HTML。摆脱他们,并添加到您的jQuery:

$(function() { 
    $('form').on('click',':checkbox', function() { 
     loadUserCalendar($(this).val()); 
    }); 
}); 

但是,也许你想要的是这样的:

$(function() { 
    $('form').on('click',':checkbox', function() { 
     $('form :checkbox').attr('checked','checked'); 
    }); 
}); 

jQuery的1.ancient版本:

$(function() { 
    $('input[type=checkbox]').live('click', function() { 
     // do things 
    }); 
}); 
+0

它说:'未捕获的类型错误:对象#没有方法'on'' – doonot

+0

你使用的是什么版本的jQuery? 1.4.potato? –

+0

由于兼容性原因我使用jQuery 1.4.4 – doonot

0

您正在使用什么版本的jQuery?

你必须尝试类似:

$('input[name="user' + users[i].substr(1,1) + '"]').attr('checked', 'checked'); 

$('input[name="user' + users[i].substr(1,1) + '"]').prop('checked', 'checked'); 

第二个是jQuery的1.6+

+0

嘿,我尝试了第一种方法,但仍然没有结果。该复选框未被检查。第二个不能用,因为我使用的是jQuery 1.4.4。 – doonot

0

当你想进行检查的东西你必须做到以下几点:

$('.myCheckbox').attr('checked','checked'); 
+0

嘿,没有工作,复选框没有被选中。 – doonot

+0

请确保你有正确的选择器$('!your selector!')。attr('checked','checked); – 2013-07-05 16:04:14

+0

这正是问题所在,这就是我发布这个问题的原因。如果你认为选择器是错误的,请告诉我正确的选择,我会接受它作为答案。 – doonot

0

如果您在方法中动态使用jQuery创建了复选框,因为简单函数将无法访问这些元素。

+0

live已被弃用了数个世纪。 –

0

关于初始化复选框,我会建议这样的事情:

$('input[type=checkbox]').each(function(index, box) { 
    $(box).attr('checked', $.inArray($(box).attr("id"), users) != -1); 
});