我有一些here似乎无法帮助我禁用提交按钮。任何想法?
<input type="checkbox" checked="checked" id="checky"><a href="#">terms and conditions</a>
<input type="submit" id="postme" value="submit">
$('#checky').click(function(){
if($(this).checked == false){
$('#postme').attr("disabled","disabled");
} else {
$('#postme').removeAttr('disabled');
}
});
答案 0 :(得分:13)
您应该检查属性checked
而不是方法。
更新了小提琴:http://jsfiddle.net/8YBu5/7/
$('#checky').click(function(){
if($(this).attr('checked') == false){
$('#postme').attr("disabled","disabled");
} else {
$('#postme').removeAttr('disabled');
}
});
修改强>
请记住,此代码需要包含在$(document).ready()
中或放在html代码的底部,否则您的JS会将自身绑定到尚未加载的DOM元素,并且会失败。
将其包装在.ready()
中<script type='text/javascript'>
$(document).ready(function(){
$('#checky').click(function(){
if($(this).attr('checked') == false){
$('#postme').attr("disabled","disabled");
} else {
$('#postme').removeAttr('disabled');
}
});
});
</script>
此代码可以放在文档中的任何位置,只有在DOM准备好后才会触发,因此您不必担心过早的触发器。
将其置于文档底部
<!-- some HTML -->
<script type='text/javascript'>
$('#checky').click(function(){
if($(this).attr('checked') == false){
$('#postme').attr("disabled","disabled");
} else {
$('#postme').removeAttr('disabled');
}
});
</script>
</body>
</html>
如果你把它放在文档的底部,你不需要将它包装在.ready()
中,因为在加载其他所有内容之前不会读取javascript。这种方法有一个性能提升(如果你有很多JS)
您可以使用这些方法中的任何一种来确保您的JS在完成加载后仅将事件处理方法绑定到DOM元素。
答案 1 :(得分:4)
if(!$(this).is(':checked') ...
答案 2 :(得分:4)
在jQuery 1.6之前attr
没问题,在1.6之后你必须使用prop
。
$('#checky').click(function(){
$('#postme').prop('checked', !$(this).checked);
})
属性和属性是不同的东西,但不幸的是jQuery花了很长时间来区分它们。
另请参阅:.prop() vs .attr()
答案 3 :(得分:2)
将$(this).checked
更改为if($(this).attr('checked') == false){
Here你去了。
答案 4 :(得分:1)
试试这种方式
$('#checky').click(function(){
if(this.checked == false){
$('#postme').attr("disabled","disabled");
}
else {
$('#postme').removeAttr('disabled');
}
});
答案 5 :(得分:1)
试试这个
$(document).ready(function(){
$("#postme").attr("disabled","disabled");
$("#checky").click(function(){
if($("#checky").is(":checked")){
$("#postme").removeAttr("disabled");
}
else{
$("#postme").attr("disabled","disabled");
}
});
})
答案 6 :(得分:-1)
向按钮#postme
添加一个单击事件,检查是否选中了复选框。如果选中,则返回false,否则返回true。
$('#postme').click( function () {
if ( !$('#checky').attr('checked') ) {
return false;
}
});