Najpierw muszę wyłączyć dane wejściowe, a następnie kliknąć link, aby je włączyć.
Do tej pory próbowałem, ale to nie działa.
HTML:
<input type="text" disabled="disabled" class="inputDisabled" value="">
jQuery:
$("#edit").click(function(event){
event.preventDefault();
$('.inputDisabled').removeAttr("disabled")
});
To pokazuje mi, true
a potem false
nic się nie zmienia dla danych wejściowych:
$("#edit").click(function(event){
alert('');
event.preventDefault();
alert($('.inputDisabled').attr('disabled'));
$('.inputDisabled').removeAttr("disabled");
alert($('.inputDisabled').attr('disabled'));
});
javascript
jquery
disabled-input
fatiDev
źródło
źródło
Odpowiedzi:
Zawsze używaj
prop()
metody do włączania lub wyłączania elementów podczas korzystania z jQuery (dlaczego poniżej).W twoim przypadku byłoby to:
Przykład jsFiddle tutaj.
Zasadniczo
prop()
należy stosować podczas pobierania lub ustawiania właściwości (takie jakautoplay
,checked
,disabled
irequired
między innymi).Używając tego
removeAttr()
, całkowicie usuwaszdisabled
sam atrybut - jednocześnieprop()
jedynie ustawiasz wartość logiczną właściwości na false.Chociaż to, co chcesz zrobić, można wykonać za pomocą
attr()
/removeAttr()
, nie oznacza to, że należy to zrobić (i może powodować dziwne / problematyczne zachowanie, jak w tym przypadku).Poniższe wyciągi (zaczerpnięte z dokumentacji jQuery dla prop () ) wyjaśniają te punkty bardziej szczegółowo:
źródło
attr
vsprop
do wyboru: w3.org/TR/html5/forms.html#concept-input-checked-dirty wyjątkiem wewnętrznej jQuery Obejście magii..prop()
został wykonany na elemencie wskazanym przezthis
(this.prop("disabled", false)
ale będąc w wywołaniu zwrotnym wiązał się on z niewłaściwym elementem, więc musiałem zrobić wspólnevar that = this
obejście. Próba grania z.apply()
/.call()
nie działała dobrze; nie wiem dlaczego. Sprawdźconsole.log(this)
dokładnie, czy jest ustawiony na pożądany obiekt, tuż przed wywołaniemthis.prop(...)
disabled
właściwości spowoduje wyłączenie elementu. Na przykład, mając<button disabled="false"></button>
opcję nie włącza przycisku, właściwość musi zostać usunięta. Wywołanie$('button').prop('disabled', false);
jQuery usunie dla ciebie właściwość, jak zauważyłem w tym codepen (sprawdź, aby zobaczyć usunięcie właściwości).http://jsfiddle.net/ZwHfY/
źródło
aby usunąć użycie atrybutu wyłączone,
i aby dodać wyłączone użycie atrybutu,
Cieszyć się :)
źródło
Użyj tego,
HTML:
JS:
źródło
<a>
, na którym.prop('disabled', false)
nie działa. Zmieniłem go na a<button>
i działa terazMyślę, że próbujesz przełączyć stan wyłączony, w takim przypadku powinieneś użyć tego (z tego pytania ):
Oto działające skrzypce.
źródło
Pomyślałem, że możesz łatwo skonfigurować
źródło
To był jedyny kod, który działał dla mnie:
Zauważ, że tak jest
removeProp
i nieremoveAttr
.Używam
jQuery 2.1.3
tutaj.źródło
2018, bez JQuery
Wiem, że pytanie dotyczy JQuery: ta odpowiedź to tylko FYI.
źródło
To pytanie konkretnie wspomina o jQuery, ale jeśli chcesz to osiągnąć bez jQuery, odpowiednikiem waniliowego JavaScript jest:
źródło
elem.removeAttr('disabled');
działa dla mnie