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