$input.disabled = true;
lub
$input.disabled = "disabled";
Jaki jest standardowy sposób? I odwrotnie, jak włączyć wyłączone wejście?
javascript
jquery
html-input
disabled-input
o mój Boże
źródło
źródło
Odpowiedzi:
jQuery 1.6+
Aby zmienić
disabled
właściwość, należy użyć.prop()
funkcji.jQuery 1.5 i poniżej
.prop()
Funkcja nie istnieje, ale.attr()
nie podobna:Ustaw wyłączony atrybut.
Aby włączyć ponownie, należy użyć właściwej metody
.removeAttr()
W dowolnej wersji jQuery
Zawsze możesz polegać na rzeczywistym obiekcie DOM i jest prawdopodobnie nieco szybszy niż dwie pozostałe opcje, jeśli masz do czynienia tylko z jednym elementem:
Zaletą korzystania z metod
.prop()
lub.attr()
jest to, że można ustawić właściwość dla kilku wybranych elementów.Uwaga: w 1.6 istnieje
.removeProp()
metoda, która brzmi bardzo podobnieremoveAttr()
, ale NIE NALEŻY UŻYWAĆ jej w przypadku właściwości natywnych, takich jak'disabled'
fragment z dokumentacji:W rzeczywistości wątpię, czy istnieje wiele uzasadnionych zastosowań tej metody, rekordy boolowskie są wykonywane w taki sposób, że powinieneś ustawić je na false zamiast „usuwać” je jak ich „atrybut” odpowiedniki w 1.5
źródło
':input'
, nie tylko'input'
. Ten ostatni wybiera tylko rzeczywiste elementy <input>.input,textarea,select,button
jest nieco lepszy w użyciu niż:input
-:input
ponieważ selektor jest dość nieefektywny, ponieważ musi wybierać,*
a następnie zapętlać każdy element i filtrować według zmiennej - jeśli przekażesz 4 selektory zmiennych bezpośrednio, jest DUŻO szybszy. Ponadto:input
nie jest standardowym selektorem CSS, więc wszelkie możliwe zyski wydajnościquerySelectorAll
są tracone.removeProp("disabled")
powodowało problem „całkowite usunięcie właściwości i brak dodawania”, jak wskazał @ThomasDavidBaker, w przypadku niektórych przeglądarek, takich jak Chrome, podczas gdy działało dobrze w niektórych, takich jak Firefox. Powinniśmy tutaj naprawdę uważać. Zawsze używaj.prop("disabled",false)
zamiast tegoTylko ze względu na nowe konwencje i & umożliwiający dostosowanie go w przyszłości (chyba że w przypadku ECMA6 zmieni się drastycznie (????)):
i
źródło
$(document).on('event_name', '#your_id', function() {...})
zamiast$('#your_id').on('event_name', function() {...})
. Jak opisano w dokumentacji jQuery .on (), poprzednia korzysta z delegowania i nasłuchuje wszystkichevent_name
zdarzeń, które pojawiają się w bąbelkach,document
i sprawdza je pod kątem dopasowania#your_id
. Ten ostatni słucha$('#your_id')
wyłącznie wydarzeń i to skaluje się lepiej.Czasami musisz wyłączyć / włączyć element formularza, taki jak input lub textarea. Jquery pomaga to łatwo zrobić, ustawiając atrybut disabled na „disabled”. Na przykład:
Aby włączyć wyłączony element, musisz usunąć atrybut „wyłączony” z tego elementu lub opróżnić jego ciąg. Na przykład:
patrz: http://garmoncheg.blogspot.fr/2011/07/how-to-disableenable-element-with.html
źródło
lub
źródło
Możesz umieścić to gdzieś globalnie w swoim kodzie:
A potem możesz pisać takie rzeczy jak:
źródło
prop
a nie właściwości, aby działała poprawnie (zakładając, że jQuery 1.6 lub nowszy).attr
disabled
attr
? Używam powyższego kodu w niektórych projektach i, o ile pamiętam, działa dobrzechecked
właściwość pól wyboru. Używanieattr
nie da tego samego rezultatu.Jeśli chcesz tylko odwrócić bieżący stan (np. Zachowanie przycisku przełączania):
źródło
Istnieje wiele sposobów korzystania z nich, możesz włączyć / wyłączyć dowolny element :
Podejście 1
Podejście 2
Jeśli używasz jQuery 1.7 lub wyższej wersji, użyj prop () zamiast attr ().
Jeśli chcesz włączyć dowolny element, musisz po prostu zrobić coś przeciwnego do tego, co zrobiłeś, aby go wyłączyć. Jednak jQuery zapewnia inny sposób na usunięcie dowolnego atrybutu.
Podejście 1
Podejście 2
Podejście 3
Ponownie, jeśli używasz jQuery 1.7 lub wyższej wersji, użyj prop () zamiast attr (). To jest. W ten sposób włączasz lub wyłączasz dowolny element za pomocą jQuery.
źródło
Aktualizacja na rok 2018:
Teraz nie ma potrzeby dla jQuery i minęło trochę czasu odkąd
document.querySelector
lubdocument.querySelectorAll
(dla wielu elementów) zrobić niemal dokładnie taką samą pracę jak $, plus bardziej wyraźnych tegetElementById
,getElementsByClassName
,getElementsByTagName
Wyłączenie jednego pola klasy „input-checkbox”
lub wiele elementów
źródło
Możesz użyć metody jQuery prop (), aby wyłączyć lub włączyć element formularza lub kontrolować dynamicznie za pomocą jQuery. Metoda prop () wymaga jQuery 1.6 i nowszych.
Przykład:
źródło
Wyłączyć:
Włączyć:
źródło
Wyłącz true dla typu danych wejściowych:
źródło
$("input[name=method]").prop('disabled', true);
to działa dla mnie
źródło
Użyłem @gnarf odpowiedzi i dodałem ją jako funkcję
Następnie użyj tego w ten sposób
źródło
2018, bez JQuery (ES6)
Wyłącz wszystkie
input
:Wyłącz za
input
pomocąid="my-input"
Pytanie jest z JQuery, to po prostu FYI.
źródło
Podejście 4 (jest to rozszerzenie odpowiedzi dzikiego kodera )
źródło
Użyj tego,
źródło
źródło
W jQuery Mobile:
Aby wyłączyć
Aby włączyć
źródło