我无法通过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());
我退回了“未定义”!为什么呢?
测试是否已经检查过:
$('#'+element[0]+'_1').attr('checked', true);
if ($('#'+element[0]+'_1'+':checked').val() !== null) {
alert('#'+element[0]+'_1');
}
这显示了警报框。所以它似乎已被检查但我看不到它?
不要像我这样的菜鸟,用$(document).ready(function() {
我设法浪费每个人的时间没有这样做,我认为从现在开始,这段代码将成为我的标准。
感谢大家的继续帮助! :)我必须给那个提到文件加载的人[lillq]!
答案 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。