javascript rimuove l'attributo "disabilitato" dall'input html


101

Come posso rimuovere l'attributo "disabilitato" da un input HTML utilizzando javascript?

<input id="edit" disabled>

in onClick voglio che il mio tag di input non sia costituito dall'attributo "disabilitato".


possibile duplicato di Come disabilito un pulsante di invio quando la casella di controllo è deselezionata? duplicare perché quella domanda spiega come attivare / disattivare, quindi come abilitare e disabilitare come richiesto qui.
Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功

Risposte:


199

Imposta la disabledproprietà dell'elemento su false:

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

Se stai usando jQuery, l'equivalente sarebbe:

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

Per diversi campi di input, puoi invece accedervi per classe:

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

Dove documentpotrebbe essere sostituito con un modulo, ad esempio, per trovare solo gli elementi all'interno di quel modulo. Puoi anche usare getElementsByTagName('input')per ottenere tutti gli elementi di input. Nella tua foriterazione, dovresti quindi verificarloinputs[i].type == 'text' .


1
sì, funziona, ma ho avuto bisogno di molti input per fare la stessa cosa. C'è qualche scorciatoia per questo? è questo posible ('id1', 'id2', 'id3')?
Jam Ville

1
sì funziona! Grazie. a proposito c'è un errore di battitura in geElementsBy. Pensavo che non avrebbe funzionato :)
Jam Ville

34

Perché non rimuovere semplicemente quell'attributo?

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

1
jQuery("#success").removeAttr("disabled");- questo funziona per me, grazie!
aftamat4ik

vanilla js, removeAttribute non è supportato in IE.
MarCrazyness

@MarCrazyness removeAttributesembra essere supportato in IE11. È contrassegnato come unknownsu posso usare, quindi ho appena aperto IE e controllato se funziona. Lo fa.
Artur

2

Per impostare disabledsu false utilizzando la nameproprietà dell'input:

document.myForm.myInputName.disabled = false;

1

La migliore risposta è solo removeAttribute

element.removeAttribute("disabled");

in firefox, come nowadys (2020), l'attributo disabled è attivo anche se è impostato su false. firefox sta solo cercando l'attributo stesso. quindi la soluzione migliore è aggiungerlo o rimuoverlo per Firefox, e questo ovviamente funziona per tutti i principali browser.
Raffael Meier

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>

il codice delle risposte precedenti non sembra funzionare in modalità inline, ma c'è una soluzione alternativa: metodo 3.

guarda la demo https://jsfiddle.net/eliz82/xqzccdfg/


Questi due non funzionano per me. method 1 <input type="text" onclick="this.disabled=false;" disabled> <hr> method 2 <input type="text" onclick="this.removeAttribute('disabled');" disabled>
Ambal Mani

1
Hai svalutato questo solo perché non sai correttamente come leggere una risposta? Il metodo 1 proviene dalla risposta di David Hedlund, il metodo 2 proviene dalla risposta di Dragos Rusu. Una volta che un elemento è disabilitato, "onclick" su quell'elemento specifico non funzionerà più in modalità inline (non ho testato la modalità js esterna). L'unico modo è simulare "disabled" è una piccola soluzione alternativa usando l'attributo readonly e alcuni css. OPPURE creare un elemento "onclick" esterno come un pulsante che abiliterà l'input utilizzando i metodi 1 e 2 (che funzionerà ovviamente).
crisc82
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.