2010-09-27 13 views
11

Ich habe ein Kontrollkästchen und wenn ich es ankreuze Ich möchte ein Textfeld aktiviert werden (standardmäßig deaktiviert) und wenn ich das Kontrollkästchen deaktivieren, ich möchte es wieder deaktiviert werden.Element mit Checkbox und jQuery deaktivieren/aktivieren?

Ich habe hier jQuery Checkboxes gesehen, wie ich eine CSS-Klasse und hier http://docs.jquery.com/Frequently_Asked_Questions#How_do_I_disable.2Fenable_a_form_element.3F umschalten kann, wie ich mit zwei Tasten zwischen aktiviert und deaktiviert wechseln kann. Aber wie kann ich den Status eines Textfelds deaktivieren/aktivieren, indem ich ein Kontrollkästchen ankreuze/abhebe?

Vielen Dank im Voraus.

Antwort

33
$(':checkbox').click(function(){ 
    $('input:text').attr('disabled',!this.checked) 
}); 

crazy demo

+1

Ich glaube, Sie wollen die Änderung Handler, der auch dann ausgelöst wird, wenn der Benutzer auf ein mit dem Kontrollkästchen verknüpftes Label klickt. –

+0

http://jsfiddle.net/FArMm/1/ aktualisiertes Beispiel von Reigel. – Tim

+0

@Rao - wenn das Etikett Sie beunruhigt, überprüfen Sie [crazy Demo 2] (http://jsfiddle.net/FArMm/2/) – Reigel

6

Sie können den Change-Handler an das Kontrollkästchen anhängen und das Textfeld mit seiner checked-Eigenschaft aktivieren/deaktivieren.

$('#theCheckbox').change(function() { 
    $('#theTextfield').attr('disabled', this.checked); 
}); 

Beispiel: http://jsbin.com/oludu3/2

0

Hier ist eine Seite das tut, was Sie suchen - es ist ziemlich minimal ist, aber zeigt, was Sie

<html> 
    <head> 
     <script src="http://code.jquery.com/jquery-1.4.2.min.js" type="text/javascript"></script> 
     <script> 
      $(document).ready(function() { 
       $("#testcheckbox").change(function() { 
        $("#testtextfield").attr("disabled", $(this).attr("checked")); 
       }); 
      }); 
     </script> 
    </head> 
    <body> 
     <input type="checkbox" id="testcheckbox" /> 
     <input type="text" id="testtextfield" /> 
    </body> 
</html> 
1

brauchen @ Martin - Löschen Sie den Text in den Textfeldern, die deaktiviert werden, und deaktivieren Sie die Kontrollkästchen s, die deaktiviert wird - fügen Sie einfach diese Zeile

$("#TextField_ID_name").val(""); 

und das Kontrollkästchen zu deaktivieren, müssen Sie ID-Namen der Checkbox und dann fügen Sie diese Zeile auf die JQuery

$("#chekcbox_ID_name").attr('checked',false) 

this helps zuweisen jemand ... obwohl ich auf Martins Frage nach 2 Jahren seit seinem Posten antworte :-)

0

Seit jQuery 1.6 sollte die .prop() Methode verwendet werden, um deaktiviert und überprüft anstelle der .attr() Methode:

$('#theCheckbox').change(function() { 
    $('#theTextfield').prop('disabled', this.checked); 
}); 
0

zeigen und versteckt ein Textfeld (# otherSection2) für die Eingabe von anderen Optionen, wenn letzter Checkbox in einer gerenderten Tabelle (#CheckBoxListList) von asp: CheckBoxList Kontrolle ausgewählt ist

$("#CheckBoxListList input[type='checkbox']:last").on("click", function() { 

       if ($(this).is(":checked")) { 
        $("#otherSection2").show(); 
       } else { 
        $("#otherSection2").hide().find("input").val(null); 

       } 
      });