2014-02-07 2 views
7

Так что я пытаюсь отключить текстовое поле, если флажок не выбран, но он не работает должным образом.jQuery's: проверено не работает?

Пример:

<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> 

Вот небольшой пример того, что я пытаюсь сделать, но он не хочет работать. В консоли нет ошибок.

Не могли бы вы объяснить, почему это не работает?

ответ

6

Использование .prop() также использовать проверенное состояние, чтобы установить значение

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

Демо: Fiddle

+0

Спасибо. По какой-то причине этот был единственным, который работал в моем реальном коде, хотя все остальные работали в jsfiddle. Спасибо за это. – Spedwards

1

Используйте length, чтобы найти элемент, в противном случае ваше состояние будет true всегда. Когда длина больше, то 0 условие будет true и false в противном случае.

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

Вы можете использовать проверенный объект недвижимости без осадков.

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

Попробуйте это:

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

Для того, чтобы сделать ваш jsFiddle работать, вам нужно:

1) Включить JQuery библиотеку

2) Используйте is(':checked') для проверки проверяется ли флажок или нет.

3) Trigger change() Событие на странице загрузки, чтобы получить статус проверенного по умолчанию.

Fiddle Demo

1

использование this.checked

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

FIDDLE

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> 
0

проверить это code..using this.checked

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

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

     }); 
Смежные вопросы