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:
$("#edit").click(function(event){
event.preventDefault();
$('.inputDisabled').prop("disabled", false); // Element(s) are now enabled.
});
Przykład jsFiddle tutaj.
prop()Po co korzystać, kiedy można to zrobić attr()/ removeAttr()?
Zasadniczo prop()należy stosować podczas pobierania lub ustawiania właściwości (takie jak autoplay, checked, disabledi requiredmiędzy innymi).
Używając tego removeAttr(), całkowicie usuwasz disabledsam atrybut - jednocześnie prop()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óżnica między atrybutami i właściwościami może być istotna w określonych sytuacjach. Przed jQuery 1.6 .attr()metoda czasami brała pod uwagę wartości właściwości podczas pobierania niektórych atrybutów, co może powodować niespójne zachowanie. Od jQuery 1.6 .prop()
metoda zapewnia sposób jawnego pobierania wartości właściwości, podczas gdy
.attr()pobiera atrybuty. ”
„Właściwości zasadniczo wpływają na stan dynamiczny elementu DOM bez zmiany serializowanego atrybutu HTML. Przykłady obejmują value
właściwość elementów wejściowych, disabledwłaściwość danych wejściowych i przycisków lub checkedwłaściwość pola wyboru. .prop()Metodę należy ustawić, disableda checkedzamiast .attr()
metoda. na .val()metoda powinna być stosowana do pobierania i ustawiania
value„.