ลองนึกภาพว่าคุณมีรูปแบบที่คุณสลับการเปิดเผยข้อมูลหลายช่อง และถ้าฟิลด์ไม่ปรากฏขึ้นคุณก็ไม่ต้องการให้มีการร้องขอ
คุณรับมือกับสถานการณ์นี้อย่างไร?
ลองนึกภาพว่าคุณมีรูปแบบที่คุณสลับการเปิดเผยข้อมูลหลายช่อง และถ้าฟิลด์ไม่ปรากฏขึ้นคุณก็ไม่ต้องการให้มีการร้องขอ
คุณรับมือกับสถานการณ์นี้อย่างไร?
คำตอบ:
การตั้งค่าองค์ประกอบฟอร์มเป็นปิดใช้งานจะหยุดการทำงานไปยังเซิร์ฟเวอร์เช่น:
<input disabled="disabled" type="text" name="test"/>
ในจาวาสคริปต์จะมีความหมายดังนี้:
var inputs = document.getElementsByTagName('input');
for(var i = 0;i < inputs.length; i++) {
if(inputs[i].style.display == 'none') {
inputs[i].disabled = true;
}
}
document.forms[0].submit();
ใน jQuery:
$('form > input:hidden').attr("disabled",true);
$('form').submit();
.prop()
แทน.attr()
เพื่อรับ AND การตั้งค่าทั้งคุณสมบัติที่ปิดใช้งานและตรวจสอบ .attr()
ในบางกรณีการตรวจสอบและหรือการตั้งค่าโดยใช้จะส่งคืนผลลัพธ์ที่ไม่ต้องการ โปรดอ่านเอกสาร jQuery ก่อนแสดงความคิดเห็นว่า yorch อ้างถึงอะไร
คุณสามารถใช้จาวาสคริปต์เพื่อตั้งค่าแอตทริบิวต์ที่ปิดใช้งาน เหตุการณ์คลิกปุ่ม "ส่ง" น่าจะเป็นจุดที่ดีที่สุดในการดำเนินการนี้
อย่างไรก็ตามฉันไม่แนะนำให้ทำเช่นนี้เลย ถ้าเป็นไปได้คุณควรกรองแบบสอบถามของคุณบนเซิร์ฟเวอร์ สิ่งนี้จะน่าเชื่อถือมากขึ้น
หากคุณต้องการปิดใช้องค์ประกอบทั้งหมดหรือบางองค์ประกอบภายในองค์ประกอบหลักที่ซ่อนอยู่คุณสามารถใช้
$("div").filter(":hidden").children("input[type='text']").attr("disabled", "disabled");
ตัวอย่างนี้http://jsfiddle.net/gKsTS/ปิดใช้งานกล่องข้อความทั้งหมดภายใน div ที่ซ่อนอยู่
สิ่งที่เกี่ยวกับ:
$('#divID').children(":input").prop("disabled", true); // disable
และ
$('#divID').children(":input").prop("disabled", false); // enable
เพื่อสลับอินพุตลูกทั้งหมด (เลือกช่องทำเครื่องหมายอินพุตพื้นที่ข้อความ ฯลฯ ) ภายใน div ที่ซ่อนอยู่
วิธีแก้ปัญหาที่ง่ายมาก (แต่ไม่ใช่วิธีที่สะดวกที่สุดเสมอไป) คือการลบแอตทริบิวต์ "name" - มาตรฐานกำหนดให้เบราว์เซอร์ไม่ส่งค่าที่ไม่มีชื่อและเบราว์เซอร์ทั้งหมดที่ฉันรู้จักปฏิบัติตามกฎนี้
ฉันจะลบค่าออกจากอินพุตหรือถอดอ็อบเจ็กต์อินพุตออกจาก DOM ดังนั้นจึงไม่มีการโพสต์ตั้งแต่แรก
:input
แทนinput
นอกจากนี้คุณยังสามารถปิดการใช้งานทั้งหมดselect
และtextarea
องค์ประกอบ