อัปเดตเมื่อมีนาคม 2555
ดังนั้นสองปีหลังจากที่ฉันตอบคำถามนี้ฉันกลับมาเพื่อดูว่ามันกลายเป็นเรื่องใหญ่มาก ฉันรู้สึกว่ามันเป็นเวลาที่ฉันจะกลับมาและทำให้คำตอบของฉันถูกต้องอย่างแท้จริงเพราะมันเป็นที่ยอมรับ + ที่โหวตขึ้นมากที่สุด
สำหรับบันทึกนั้นคำตอบของ Titi นั้นผิดเพราะไม่ใช่สิ่งที่ผู้โพสต์ดั้งเดิมถาม - มันถูกต้องที่จะสามารถตั้งค่ารูปแบบใหม่โดยใช้วิธีการตั้งค่าดั้งเดิม () แต่คำถามนี้พยายามที่จะลบรูปแบบออกจากความทรงจำ ค่าที่จะยังคงอยู่ในแบบฟอร์มหากคุณรีเซ็ตด้วยวิธีนี้ นี่คือเหตุผลที่จำเป็นต้องรีเซ็ต "แบบแมนนวล" ฉันคิดว่าคนส่วนใหญ่ลงเอยด้วยคำถามนี้จากการค้นหาของ Google และกำลังมองหาวิธีการรีเซ็ต () อย่างแท้จริง แต่มันไม่ทำงานในกรณีเฉพาะที่ OP กำลังพูดถึง
คำตอบเดิมของฉันคือ:
// not correct, use answer below
$(':input','#myform')
.not(':button, :submit, :reset, :hidden')
.val('')
.removeAttr('checked')
.removeAttr('selected');
ซึ่งอาจใช้งานได้หลายกรณีรวมถึง OP แต่ที่ระบุไว้ในความคิดเห็นและคำตอบอื่น ๆ จะล้างองค์ประกอบวิทยุ / ช่องทำเครื่องหมายจากแอตทริบิวต์ค่าใด ๆ
คำตอบที่ถูกต้องมากขึ้น(แต่ไม่สมบูรณ์) คือ:
function resetForm($form) {
$form.find('input:text, input:password, input:file, select, textarea').val('');
$form.find('input:radio, input:checkbox')
.removeAttr('checked').removeAttr('selected');
}
// to call, use:
resetForm($('#myform')); // by id, recommended
resetForm($('form[name=myName]')); // by name
การใช้:text
, :radio
การปฏิบัติที่ไม่ดี ฯลฯ เตอร์ด้วยตัวเองคือการพิจารณาโดย jQuery ที่พวกเขาจบลงด้วยการประเมินไป*:text
ซึ่งจะทำให้มันใช้เวลานานกว่าที่ควร ฉันชอบวิธีการที่อนุญาตพิเศษและหวังว่าฉันจะใช้มันในคำตอบเดิมของฉัน อย่างไรก็ตามด้วยการระบุinput
ส่วนของตัวเลือกรวมถึงแคชขององค์ประกอบแบบฟอร์มสิ่งนี้ควรทำให้เป็นคำตอบที่มีประสิทธิภาพดีที่สุดที่นี่
คำตอบนี้อาจยังมีข้อบกพร่องบางอย่างหากค่าเริ่มต้นของผู้ใช้สำหรับองค์ประกอบที่เลือกไม่ใช่ตัวเลือกที่มีค่าว่าง แต่แน่นอนว่าเป็นเรื่องทั่วไปตามที่จะได้รับและสิ่งนี้จะต้องได้รับการจัดการเป็นกรณี ๆ ไป .
not()
ถ้าแบบฟอร์มของคุณมีอินพุตที่ซ่อนอยู่