2014-02-07 9 views
7

Also ich versuche, ein Textfeld zu deaktivieren, wenn ein Kontrollkästchen nicht ausgewählt ist, aber es funktioniert nicht wie es sollte.jQuery's: überprüft funktioniert nicht?

Beispiel:

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

, dass ein kurzes Beispiel dafür, was ich versuche zu tun, aber es will nicht arbeiten. In der Konsole sind keine Fehler aufgetreten.

Könnte jemand bitte erklären, warum das nicht funktioniert?

Antwort

6

Verwenden .prop() auch die Überprüfungsstatus verwenden, um den Wert

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

Demo zu setzen: Fiddle

+0

Dank. Aus irgendeinem Grund war dieser der einzige, der in meinem eigentlichen Code funktionierte, obwohl alle anderen in JFiddle arbeiteten. Danke dafür. – Spedwards

1

Verwenden Sie length zu finden, ob Element überprüft wird, ansonsten wird Ihre Bedingung immer true sein. Wenn die Länge größer als 0 ist, lautet die Bedingung true und false andernfalls.

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

Sie können geprüfte Eigenschaft direkt ohne Bedingung verwenden.

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

Versuchen Sie folgendes:

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

Um Ihre jsFiddle, um die Arbeit, müssen Sie:

1) Fügen Sie Bibliothek jQuery

2) Verwenden Sie is(':checked') zu prüfen, ob Kontrollkästchen aktiviert ist oder nicht.

3) Trigger change() Ereignis beim Laden der Seite, um den standardmäßig aktivierten Status abzufangen.

Fiddle Demo

1

Verwendung this.checked

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

FIDDLE

1

Hier gehen Sie:

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

Kontrolle dieses code..using this.checked

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

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

     }); 
Verwandte Themen