วิธีปิดการใช้งาน <input> ทั้งหมดในแบบฟอร์มด้วย jQuery


คำตอบ:


283

ในรุ่นเก่าที่คุณสามารถattrใช้ได้ ตั้งแต่ jQuery 1.6 คุณควรใช้propแทน:

$("#target :input").prop("disabled", true);

หากต้องการปิดการใช้งานองค์ประกอบแบบฟอร์มทั้งหมดภายใน 'เป้าหมาย' ดู:input:

ตรงกับองค์ประกอบการป้อนข้อความ textarea เลือกและปุ่มทั้งหมด

หากคุณต้องการเพียง<input>องค์ประกอบ:

$("#target input").prop("disabled", true);

21
ตั้งแต่ jQuery 1.6 คุณควรใช้$("#target :input").prop("disabled", true);
danijel

4
บางคนควรแก้ไขคำตอบด้วยวิธีการอัปเดตซึ่งเป็นข้อมูลที่ไม่ดี ณ จุดนี้
Ben Claar

และในการโทรกลับแบบ submit () โดยใช้ $ (สิ่งนี้) จะทำอย่างไร?
Olivier Pons

2
$(this).closest('form').find('input').prop('disabled', true);@OlivierPons ไม่แน่ใจว่าคุณสามารถรวมที่ดีกว่าฉันยังคงค่อนข้างไม่รบกวนที่ jQuery
wjervis

39

ตัวอย่างข้างต้นไม่ถูกต้องทางเทคนิค ตาม jQuery ล่าสุดให้ใช้prop()วิธีการที่ควรใช้กับสิ่งต่างๆเช่นปิดการใช้งาน ดูหน้า API ของพวกเขา

หากต้องการปิดการใช้งานองค์ประกอบแบบฟอร์มทั้งหมดภายใน 'เป้าหมาย' ให้ใช้: ตัวเลือกอินพุตซึ่งตรงกับองค์ประกอบอินพุตข้อความ textarea เลือกและปุ่มทั้งหมด

$("#target :input").prop("disabled", true);

หากคุณต้องการเพียงองค์ประกอบใช้สิ่งนี้

$("#target input").prop("disabled", true);

15

วิธีที่รัดกุมยิ่งขึ้นคือการใช้เอ็นจิ้นตัวเลือก ดังนั้นเพื่อปิดการใช้งานองค์ประกอบแบบฟอร์มทั้งหมดใน div หรือแบบฟอร์มผู้ปกครอง

$myForm.find(':input:not(:disabled)').prop('disabled',true)


8

หากต้องการปิดใช้งานฟอร์มทั้งหมดให้ง่ายเหมือนเขียน:

jQuery 1.6+

$("#form :input").prop("disabled", true);

jQuery 1.5 และต่ำกว่า

$("#form :input").attr('disabled','disabled');

8

ด้วยหนึ่งบรรทัดนี้คุณสามารถปิดใช้งานฟิลด์อินพุตใด ๆ ในแบบฟอร์ม

$('form *').prop('disabled', true);

สิ่งนี้จะเพิ่มคุณสมบัติที่ปิดใช้งานโดยไม่จำเป็นไปยังองค์ประกอบทั้งหมดในฟอร์ม
Osvaldo Maria

@OsvaldoMaria ใช่นั่นเป็นเพราะตัวเลือกดาว (ทั้งหมด) คุณสามารถเพิ่ม. class แบบกำหนดเองให้กับองค์ประกอบอินพุตทั้งหมดที่คุณต้องการปิดใช้งานจากนั้นเปลี่ยนตัวเลือกเป็น $ ('form .custom-class') prop ( 'ปิดการใช้งาน', จริง ')
Samir Rahimy

-1

คำตอบที่ชัดเจน (ครอบคลุมการเปลี่ยนแปลงของ jQuery api ที่รุ่น 1.6) ได้รับจากGnarf


เขาขอให้ "ปิดใช้งานอินพุตทั้งหมดภายในฟอร์ม" ไม่ใช่เพียงแค่ "ปิดใช้งานอินพุตทั้งหมด"
Bengala

@Bengala แน่นอน แต่คุณกำลังทำเครื่องหมายฉันอย่างรุนแรงว่าเป็นคนแรกที่ชี้ให้เห็นว่า API มีการเปลี่ยนแปลง ในขณะที่ฉันโพสต์นี้ไม่มีคำตอบอื่น ๆ ที่กล่าวถึงจุดนี้
ErichBSchulz

ฉันเข้าใจ แต่ฉันคิดว่าคุณควรรวมคำตอบที่ถูกต้องกับเครดิตตามลำดับลิงก์เพียงแสดงวิธีการปิดการใช้งานอินพุตทั้งหมดซึ่งฉันยืนยันว่ามันไม่ตอบคำถามเลย
Bengala
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.