如果取消选中复选框,如何禁用提交按钮?

时间:2011-03-28 11:48:36

标签: javascript jquery checkbox

我有一些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');
    }
});

7 个答案:

答案 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;
    }
});