2009-11-23 13 views
17

Nie mogę sprawić, że zadziała removeAttr, używam przykładu, który widziałem na stronie jQuery. Zasadniczo onclick Dodaję atrybut, aby wyłączyć pole (które działa dobrze), ale gdy użytkownik kliknie ponownie, powinien włączyć to pole. Użyłem alertów, aby upewnić się, że blok else jest uruchamiany, więc wiem, że to nie to.jQuery usuń atrybut

Kod:

$('#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'); 
    } 
}); 

Dzięki.

+1

jeśli ("# zapomniałeś") zawsze będzie działać. Zgaduję, że to literówka? – mtyaka

+2

W celu późniejszego wykorzystania, jQuery zaleca używanie metody '.prop()' (http://api.jquery.com/prop/) podczas pobierania i ustawiania właściwości wejściowych, takich jak wyłączone. Jest bardziej przyjazny dla przeglądarek, w zależności od wersji jQuery, z której przeglądasz użytkowników. – jasonmerino

+1

możliwy duplikat [Usuń wyłączony atrybut za pomocą JQuery?] (Http://stackoverflow.com/questions/13626517/remove-disabled-attribute-using-jquery) – user2381114

Odpowiedz

17

Wszystko dobre używane to:

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

Twój problem polega na tym, że poniższy wiersz kodu zawsze będzie miał wartość true.

if('#forgot_pw') 

spróbować wymienić z

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

Ten sam problem, mogę go wyłączyć, ale nie włączyć ponownie. – Tarek

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

powinny pracować dla Ciebie.