2012-07-30 23 views
45

Jak mogę usunąć atrybut "disabled" dla danych wejściowych html przy użyciu javascript?javascript usuń atrybut "disabled" dla html input

<input id=edit disabled> 

w onclick Chciałam, aby mój tag wejściowy nie składał się z "wyłączonego" atrybutu.

+0

możliwe duplikat [jak wyłączyć jako przycisk ubmit, gdy pole wyboru jest odznaczone?] (http://stackoverflow.com/questions/5458531/how-do-i-disable-a-submit-button-when-checkbox-is-uncheck) duplikat, ponieważ to pytanie wyjaśnia, w jaki sposób przełącz, dlatego włączaj * i * wyłącz, tak jak tu pytano. –

Odpowiedz

108

ustawić elementu disabled właściwość false:

document.getElementById('my-input-id').disabled = false; 

Jeśli używasz jQuery, odpowiednik byłoby:

$('#my-input-id').prop('disabled', false); 

kilku pól wejściowych, można uzyskać do nich dostęp przez klasy zamiast :

var inputs = document.getElementsByClassName('my-input-class'); 
for(var i = 0; i < inputs.length; i++) { 
    inputs[i].disabled = false; 
} 

Gdzie document można zastąpić na przykład, aby znaleźć tylko elementy wewnątrz tej formy. Możesz także użyć getElementsByTagName('input'), aby uzyskać wszystkie elementy wejściowe. W Twojej iteracji for musisz sprawdzić, czy jest to inputs[i].type == 'text'.

+1

Tak, działa, ale miałem dużo potrzebnych danych do zrobienia tego samego. Czy jest na to skrót? czy to jest posible ("id1", "id2", "id3")? –

+0

@IvorySantos: w porządku, zobacz moją edycję. –

+1

tak, to działa! dzięki. przy okazji jest błąd literowy w geelementsBy. Myślałem, że to nie zadziała :) –

2

Aby ustawić disabled false pomocą właściwości name wejścia:

document.myForm.myInputName.disabled = false; 
13

Dlaczego nie po prostu usunąć ten atrybut?

  1. wanilii JS: elem.removeAttribute('disabled')
  2. jQuery: elem.removeAttr('disabled')
+1

'jQuery (" # success "). RemoveAttr (" disabled ");' - to działa dla mnie, dzięki! – aftamat4ik

0
method 1 <input type="text" onclick="this.disabled=false;" disabled> 
<hr> 
method 2 <input type="text" onclick="this.removeAttribute('disabled');" disabled> 
<hr> 
method 3 <input type="text" onclick="this.removeAttribute('readonly');" readonly> 

kod z poprzednich odpowiedzi nie wydają się działać w trybie inline, ale istnieje obejście: Metoda 3.

zobaczyć demo https://jsfiddle.net/eliz82/xqzccdfg/

+0

Ta dwójka nie działa dla mnie. '' method 1


metoda 2 '' –

+1

Wycofałeś się z tego tylko dlatego, że nie wiesz dokładnie, jak odczytać odpowiedź? Metoda 1 pochodzi z odpowiedzi Davida Hedlunda, metoda 2 pochodzi z odpowiedzi Dragos Rusu. Gdy element zostanie wyłączony, "onclick" na tym konkretnym elemencie nie będzie działał w trybie liniowym (nie testowałem zewnętrznego trybu js). Jedynym sposobem jest zasymulowanie "wyłączonego" to trochę obejścia przy użyciu atrybutu readonly i niektórych css. LUB utwórz zewnętrzny element "onclick", taki jak przycisk, który umożliwi wprowadzanie danych za pomocą metod 1 i 2 (to oczywiście zadziała). – eliz82