当checkbox取消选中时,如何禁用提交button?

我在这里有东西,似乎无法帮助我禁用提交button。 有任何想法吗?

<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'); } }); 

您应该检查检查的属性,而不是方法。

更新小提琴: 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元素。

 if(!$(this).is(':checked') ... 

在jQuery 1.6 attr之前,1.6之后,你必须使用prop

 $('#checky').click(function(){ $('#postme').prop('checked', !$(this).checked); }) 

属性和属性是不同的东西,但不幸的是jQuery花了很长时间来区分它们。

另请参见: .prop()vs .attr()

更改$(this).checked to if($(this).attr('checked') == false){

在这里,你去。

试试这个方法

 $('#checky').click(function(){ if(this.checked == false){ $('#postme').attr("disabled","disabled"); } else { $('#postme').removeAttr('disabled'); } }); 

尝试这个

 $(document).ready(function(){ $("#postme").attr("disabled","disabled"); $("#checky").click(function(){ if($("#checky").is(":checked")){ $("#postme").removeAttr("disabled"); } else{ $("#postme").attr("disabled","disabled"); } }); }) 

添加到button#postme一个点击事件,检查checkbox是否被选中。 如果选中,则返回false,否则返回true。

 $('#postme').click( function () { if ( !$('#checky').attr('checked') ) { return false; } });