javascript ลบแอตทริบิวต์ "ปิดการใช้งาน" ออกจากอินพุต html


105

ฉันจะลบแอตทริบิวต์ "ปิดการใช้งาน" ออกจากอินพุต HTML โดยใช้จาวาสคริปต์ได้อย่างไร

<input id="edit" disabled>

ที่ onClick ฉันต้องการให้แท็กอินพุตของฉันไม่ประกอบด้วยแอตทริบิวต์ "disabled"


อาจซ้ำกันได้ของฉันจะปิดใช้งานปุ่มส่งได้อย่างไรเมื่อไม่ได้เลือกช่องทำเครื่องหมาย ซ้ำกันเนื่องจากคำถามนั้นอธิบายถึงวิธีการสลับดังนั้นวิธีเปิดและปิดใช้งานตามที่ถามที่นี่
Ciro Santilli 郝海东冠状病六四事件法轮功

คำตอบ:


207

ตั้งค่าdisabledคุณสมบัติขององค์ประกอบเป็นเท็จ:

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

หากคุณใช้ jQuery สิ่งที่เทียบเท่าจะเป็น:

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

สำหรับช่องป้อนข้อมูลหลายช่องคุณสามารถเข้าถึงได้ตามชั้นเรียนแทน:

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

documentสามารถแทนที่ด้วยฟอร์มได้ที่ไหนเพื่อค้นหาเฉพาะองค์ประกอบภายในแบบฟอร์มนั้น คุณยังสามารถใช้getElementsByTagName('input')เพื่อรับองค์ประกอบอินพุตทั้งหมด ในforการทำซ้ำคุณจะต้องตรวจสอบสิ่งinputs[i].type == 'text'นั้น


1
ใช่มันใช้งานได้ แต่ฉันมีข้อมูลจำนวนมากที่ต้องทำสิ่งเดียวกัน มีทางลัดสำหรับสิ่งนี้หรือไม่? เป็นไปได้ไหม ('id1', 'id2', 'id3')
แจ่มวิลล์

1
ใช่มันได้ผล! ขอบคุณ. มีข้อผิดพลาดในการพิมพ์ผิดที่ geElementsBy ฉันคิดว่ามันคงไม่ได้ผล :)
Jam Ville

36

ทำไมไม่เพียงลบแอตทริบิวต์นั้น?

  1. วานิลลา JS: elem.removeAttribute('disabled')
  2. jQuery: elem.removeAttr('disabled')

1
jQuery("#success").removeAttr("disabled");- มันใช้ได้กับฉันขอบคุณ!
aftamat4ik

vanilla js, removeAttribute ไม่รองรับใน IE
MarCrazyness

@MarCrazyness removeAttributeดูเหมือนว่าจะรองรับใน IE11 มีเครื่องหมายว่าunknownสามารถใช้ได้ดังนั้นฉันจึงเปิด IE และตรวจสอบว่าใช้งานได้หรือไม่ มัน.
Artur

3

ในการตั้งค่าเป็นdisabledเท็จโดยใช้nameคุณสมบัติของอินพุต:

document.myForm.myInputName.disabled = false;

2

คำตอบที่ดีที่สุดคือแค่ removeAttribute

element.removeAttribute("disabled");

ใน firefox ในขณะที่ nowadys (2020) แอตทริบิวต์ที่ปิดใช้งานนั้นใช้งานได้แม้ว่าจะถูกตั้งค่าเป็นเท็จ firefox แค่มองหาแอตทริบิวต์เอง ดังนั้นทางออกที่ดีที่สุดคือการเพิ่มหรือลบออกสำหรับ firefox และแน่นอนว่าสิ่งนี้ใช้ได้กับเบราว์เซอร์หลัก ๆ ทั้งหมด
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>

รหัสของคำตอบก่อนหน้านี้ดูเหมือนจะไม่ทำงานในโหมดอินไลน์ แต่มีวิธีแก้ปัญหา: วิธีที่ 3

ดูการสาธิตhttps://jsfiddle.net/eliz82/xqzccdfg/


สองคนนี้ไม่ได้ผลสำหรับฉัน method 1 <input type="text" onclick="this.disabled=false;" disabled> <hr> method 2 <input type="text" onclick="this.removeAttribute('disabled');" disabled>
Ambal Mani

1
คุณลดลงเพียงเพราะคุณไม่รู้วิธีอ่านคำตอบอย่างถูกต้อง? วิธีที่ 1 มาจากการตอบสนองของ David Hedlund วิธีที่ 2 มาจากการตอบสนองของ Dragos Rusu เมื่อปิดใช้งานองค์ประกอบ "onclick" บนองค์ประกอบนั้นจะไม่ทำงานอีกต่อไปในโหมดอินไลน์ (ฉันไม่ได้ทดสอบโหมด js ภายนอก) วิธีเดียวคือการจำลอง "ปิดใช้งาน" เป็นวิธีแก้ปัญหาเล็กน้อยโดยใช้แอตทริบิวต์แบบอ่านอย่างเดียวและ css บางตัว หรือสร้างองค์ประกอบ "onclick" ภายนอกเช่นปุ่มที่จะเปิดใช้งานอินพุตโดยใช้วิธีที่ 1 และ 2 (แน่นอนว่าจะได้ผล)
crisc82
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.