无法使用JQuery勾选Checkboxes

时间:2010-02-20 16:50:08

标签: javascript jquery

我无法通过JQuery检查复选框 - 我已经这样做了:

if(element[1]==3)
  alert('#'+element[0]+'_1');//shows #chk_1
  $('#'+element[0]+'_1').attr('checked', true);
  $('#'+element[0]+'_2').attr('checked', true);
  $('#'+element[0]+'_3').attr('checked', true);    
}

我知道它达到了这一点,因为我可以看到具有正确变量名称的警报窗口。我还包括JQuery,我的firebug没有抱怨任何错误,它什么也没发生。

我还有其他一些在用户点击时有效的功能:

onclick="checker($(this).attr('id'));" 

基本上检查是否允许用户勾选复选框,但如果我使用上述方法,则不应该激活这个,对吗?另外,我已经完成了自动滴答,这样就可以保留这些规则并允许用户勾选复选框。

我可以单击复选框,并在检查器功能中正确完成这些规则检查。

HELP!我不知道坦率地说有什么不对。

我很感激你的帮助。

更新

根据Pekka的建议,我发现没有JQuery函数似乎在起作用:

$('#'+element[0]+'_1').hide();

什么也没做。那么这意味着元素的ID有问题吗?但元素确实存在且名称正确!

我给了复选框一个值并尝试了这个:

alert($('#'+element[0]+'_1').val());

我退回了“未定义”!为什么呢?

更新2

测试是否已经检查过:

$('#'+element[0]+'_1').attr('checked', true);

if ($('#'+element[0]+'_1'+':checked').val() !== null) {
   alert('#'+element[0]+'_1');
}

这显示了警报框。所以它似乎已被检查但我看不到它?

更新 - 解决方案

不要像我这样的菜鸟,用$(document).ready(function() {

包装JQuery代码

我设法浪费每个人的时间没有这样做,我认为从现在开始,这段代码将成为我的标准。

感谢大家的继续帮助! :)我必须给那个提到文件加载的人[lillq]!

3 个答案:

答案 0 :(得分:2)

一个想法是:

如果您的html中有多个chk_1, chk_2, chk_3 ID,$('#'+element[0]+'_2').attr('checked', true);只会影响您文档中的第一个。

我运行了你提供的代码:

HTML

...
<body>
    <input type="checkbox" id="el1" onclick="checker($(this).attr('id'));" />Text<br />
    <input type="checkbox" id="el2" onclick="checker($(this).attr('id'));" />Text<br />
    <input type="checkbox" id="el3" onclick="checker($(this).attr('id'));" />Text<br />
</body>
</html>
<script type="text/javascript">
    init();
</script>

的javascript

function init () {
    $('#el1').attr('checked', true); 
    $('#el2').attr('checked', true); 
    $('#el3').attr('checked', true); 
}
function checker(id)
{
    alert(id);
}

此处的init函数会在文档加载后检查所有框。是否还有其他信息可以帮助我们。

我喜欢将这样的示例简化为最简单的失败代码。

答案 1 :(得分:0)

尝试('#'+element[0]+'_1').click();

答案 2 :(得分:0)

更改已检查状态可能会触发onchange事件,但肯定不会触发click事件,因此无关紧要。

您不应将该属性设置为true,而是"checked"

$('#'+element[0]+'_1').attr('checked', 'checked');

请参阅此FAQ entry