jQuery:检查不工作?

时间:2014-02-07 07:30:25

标签: javascript jquery

所以我试图禁用文本字段,如果没有选中复选框,但它不能正常工作。

示例:http://jsfiddle.net/GV7U9/

<input type="checkbox" id="check" checked /><br />
#<input type="text" size="8" maxlength="6" id="colour" placeholder="ffffff" />

<script>
    $('#check').change(function(){
        if( $('#check:checked') ){
            $('#colour').removeAttr('disabled');
        } else {
            $('#colour').attr('disabled','');
        }
    });
</script>

这是我正在尝试做的一个简短示例,但它不想工作。控制台中没有错误。

有人可以解释为什么这不起作用吗?

7 个答案:

答案 0 :(得分:9)

使用.prop()也可以使用checked状态来设置值

$('#check').change(function () {
    $('#colour').prop('disabled', !this.checked);
});

演示:Fiddle

答案 1 :(得分:4)

尝试$('#check').is(':checked')

这里是Fiddle

答案 2 :(得分:1)

使用length查找是否已选中元素,否则您的条件将始终为true。当长度较大时,0条件将为true,否则为false

 if( $('#check:checked').length ){
        $('#colour').removeAttr('disabled');
  } else {
        $('#colour').attr('disabled','');
  }

您可以直接使用checked属性而无需使用条件。

$('#check').change(function () {
    $('#colour').prop('disabled', !this.checked);
});

答案 3 :(得分:1)

试试这个:

$('#check').change(function(){
    if($('#check').is(':checked')){
        $('#colour').removeAttr('disabled');
    } else {
        $('#colour').attr('disabled','');
    }
}).change();

为了让你的jsFiddle工作,你需要:

1)包含jQuery库

2)使用is(':checked')检查是否选中了复选框。

3)在页面加载时触发change()事件以捕获默认的已检查状态。

<强> Fiddle Demo

答案 4 :(得分:1)

使用this.checked

$('#check').change(function(){
    if(this.checked){
            $('#colour').removeAttr('disabled');
        } else {
            $('#colour').attr('disabled',true);
        }
});

<强> FIDDLE

答案 5 :(得分:1)

你走了:

http://jsfiddle.net/4dwkG/

<input type="checkbox" id="check" checked /><br />
#<input type="text" size="8" maxlength="6" id="colour" placeholder="ffffff" />

<script>
    $('#check').change(function(){
        if( $('#check').is(":checked") ){
            $('#colour').removeAttr('disabled');
        } else {
            $('#colour').attr('disabled','');
        }
    });
</script>

答案 6 :(得分:1)

检查此代码..使用this.checked

 $('#check').change(function(){

                if(this.checked)
                $('#colour').removeAttr('disabled');
                else 
                $('#colour').attr('disabled','disabled');

        });