2010-12-20 11 views
1

Ich erwarte, ein Kontrollkästchen zu aktivieren/deaktivieren, und aktivieren/deaktivieren Sie eine Absenden-Schaltfläche. Javascript feuert, zeigt keine Fehler an, aber die Eingaben werden einfach nicht mehr als einmal geändert.Checkbox aktiviert/deaktiviert das Senden funktioniert nur einmal, jquery

JS:

$('#readTerms').change(function() { 
    var buttonsChecked = $('#readTerms:checked'); 
    if (buttonsChecked.length) 
    { 
     $('#submitBusiness').removeAttr('disabled'); 
    } 
    else 
    { 
     $('#submitBusiness').attr('disabled', 'disabled'); 
    } 
}); 

HTML:

<input type="checkbox" id="readTerms" name="agree"> <label for="agree">By checking the box you agree to the <a href="/terms" target="_blank">Terms &amp; Conditions</a>.</label> 

<input id="submitBusiness" class="btn positive iconCheck right" type="submit" name="create" value="Submit" disabled="disabled" /> 

Submit-Button deaktiviert beginnt. Klicken Sie auf das Kontrollkästchen und es aktiviert, klicken Sie erneut auf das Kontrollkästchen und nichts. Die if/else-Anweisung funktioniert einwandfrei. Der Code feuert, es löst Breakpoints in Firebug usw. aus etc.

Was mache ich falsch?

+0

Werke für mich; Welcher Browser, jquery Version? versuche 'attr ('deaktiviert', wahr) ' – ysth

Antwort

2

Probieren Sie etwas wie folgt aus:

$('#readTerms').change(function() { 
    $('#submitBusiness').attr('disabled', !this.checked); 
}); 

Beispiel: http://jsfiddle.net/redler/TETg6/

2

Ich würde so etwas wie dies versuchen stattdessen:

$('#readTerms').click(function() { 
    var buttonsChecked = this.checked; 
    if (buttonsChecked == true){ 
     $('#submitBusiness').removeAttr('disabled'); 
    }else{ 
     $('#submitBusiness').attr('disabled', 'disabled'); 
    } 
});