javascript html girişinden "devre dışı" özelliğini kaldırın


104

JavaScript kullanarak bir HTML girişinden "devre dışı" özelliğini nasıl kaldırabilirim?

<input id="edit" disabled>

onClick'te girdi etiketimin "devre dışı" özniteliğinden oluşmamasını istiyorum.


olası kopyası Onay kutusunun işareti kaldırıldığında bir gönder düğmesini nasıl devre dışı bırakabilirim? Bu soruya etkinleştirmek için bu nedenle nasıl geçiş yapmak için açıklar çünkü çoğaltmak ve burada sorulan olarak devre dışı.
Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功

Yanıtlar:


204

Öğenin disabledözelliğini false olarak ayarlayın :

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

JQuery kullanıyorsanız, eşdeğeri şöyle olacaktır:

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

Birkaç giriş alanı için bunlara sınıfa göre erişebilirsiniz:

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

documentÖrneğin, yalnızca o formun içindeki öğeleri bulmak için bir formla nerede değiştirilebilir. getElementsByTagName('input')Tüm girdi öğelerini almak için de kullanabilirsiniz . Senin içinde foryineleme, o zaman kontrol etmesi gerekir inputs[i].type == 'text'.


1
evet işe yarıyor, ancak aynı şeyi yapmak için çok fazla girdim vardı. Bunun için herhangi bir kısayol var mı? bu mümkün mü ('id1', 'id2', 'id3')?
Jam Ville

1
Evet çalışıyor! Teşekkürler. bu arada geElementsBy'de bir yazım hatası var. Çalışmayacağını düşündüm :)
Jam Ville

35

Neden bu özelliği kaldırmıyorsunuz?

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

1
jQuery("#success").removeAttr("disabled");- bu benim için çalışıyor, teşekkürler!
aftamat4ik

vanilla js, removeAttribute IE'de desteklenmez.
MarCrazyness

@MarCrazyness removeAttribute, IE11'de destekleniyor gibi görünüyor. unknownKullanabilir miyim olarak işaretlendi , bu yüzden IE'yi açtım ve çalışıp çalışmadığını kontrol ettim. Öyle.
Artur

3

disabledGirdinin nameözelliğini kullanarak değerini false olarak ayarlamak için :

document.myForm.myInputName.disabled = false;

2

En iyi cevap sadece removeAttribute

element.removeAttribute("disabled");

firefox'ta, nowadys (2020) gibi devre dışı bırakılmış öznitelik, yanlış olarak ayarlanmış olmasına rağmen etkindir. firefox sadece özelliğin kendisini arıyor. bu yüzden en iyi çözüm firefox için eklemek veya kaldırmaktır ve bu tabii ki tüm büyük tarayıcılarda işe yarar.
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>

Önceki yanıtların kodu satır içi modda çalışmıyor gibi görünüyor, ancak bir geçici çözüm var: yöntem 3.

demoya bakın https://jsfiddle.net/eliz82/xqzccdfg/


Bu ikisi benim için çalışmıyor. method 1 <input type="text" onclick="this.disabled=false;" disabled> <hr> method 2 <input type="text" onclick="this.removeAttribute('disabled');" disabled>
Ambal Mani

1
Bunu, bir cevabı nasıl okuyacağını tam olarak bilmediğin için mi reddettin? Yöntem 1, David Hedlund cevabından, yöntem 2 ise Dragos Rusu cevabından. Bir öğe devre dışı bırakıldığında, o belirli öğe üzerindeki "onclick" artık satır içi modda çalışmayacaktır (harici js modunu test etmedim). Tek yol, "devre dışı" benzetimi yapmak, salt okunur özniteliği ve bazı css kullanarak küçük bir geçici çözümdür. VEYA yöntem 1 ve 2'yi kullanarak girişi etkinleştirecek bir düğme gibi harici bir "onclick" öğesi yapın (tabii ki işe yarayacak).
crisc82
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.