2009-11-23 15 views
17

Ich kann nicht scheinen removeAttr zu arbeiten, ich verwende das Beispiel, das ich auf der jQuery-Website gesehen habe. Grundsätzlich onclick Ich füge das Attribut hinzu, um ein Feld zu deaktivieren (was gut funktioniert), aber wenn der Benutzer erneut klickt, sollte es das fragliche Feld aktivieren. Ich habe Warnungen verwendet, um sicherzustellen, dass der Else-Block ausgelöst wird, also weiß ich, dass es nicht ist.jQuery Attribut entfernen

Code:

$('#WindowOpen').click(function (event) { 
    event.preventDefault(); 
    $('#forgot_pw').slideToggle(600); 

    if('#forgot_pw') { 
    $('#login_uname, #login_pass').attr('disabled','disabled'); 
    } else { 
    $('#login_uname, #login_pass').removeAttr('disabled'); 
    } 
}); 

Dank.

+1

wenn ('# forgot_pw') immer ausgeführt wird. Ich vermute, das ist ein Tippfehler? – mtyaka

+2

Als zukünftige Referenz empfiehlt jQuery, die Methode '.prop()' (http://api.jquery.com/prop/) zu verwenden, wenn Eingabeeigenschaften wie "disabled" abgerufen und festgelegt werden. Je nachdem, welche Version von jQuery Sie verwenden und in welchem ​​Browser Ihre Benutzer navigieren, ist dies eher Cross-Browser-freundlich. – jasonmerino

+1

mögliches Duplikat von [Remove disabled Attribut mit JQuery?] (Http://stackoverflow.com/questions/13626517/remove-disabled-attribute-using-jquery) – user2381114

Antwort

17

Alle benutzten gut ersetzen:

$('#WindowOpen').toggle(
    function() 
    { 
     $('#login_uname, #login_pass').attr("disabled","disabled");  
    }, 
    function() 
    { 
     $('#login_uname, #login_pass').removeAttr("disabled");  
    }); 
5

Ihr Problem ist, dass die folgende Codezeile immer als wahr ausgewertet wird.

if('#forgot_pw') 

versuchen mit

if($('#forgot_pw').attr('disabled')) 
+0

Gleiches Problem, ich bekomme es zu deaktivieren, aber nicht wieder aktivieren. – Tarek

4
$('#forgot_pw').attr('disabled', false); 

sollte für Sie arbeiten.