ฉันมีรูปแบบที่มีปุ่มที่ส่งแบบฟอร์ม ฉันต้องทำอะไรบางอย่างก่อนส่งจะเกิดขึ้น ฉันพยายามทำonClickที่ปุ่มนั้น แต่มันเกิดขึ้นหลังจากส่ง
ฉันไม่สามารถแบ่งปันรหัสได้ แต่โดยทั่วไปฉันควรทำอย่างไรใน jQuery หรือ JS เพื่อจัดการสิ่งนี้
ฉันมีรูปแบบที่มีปุ่มที่ส่งแบบฟอร์ม ฉันต้องทำอะไรบางอย่างก่อนส่งจะเกิดขึ้น ฉันพยายามทำonClickที่ปุ่มนั้น แต่มันเกิดขึ้นหลังจากส่ง
ฉันไม่สามารถแบ่งปันรหัสได้ แต่โดยทั่วไปฉันควรทำอย่างไรใน jQuery หรือ JS เพื่อจัดการสิ่งนี้
คำตอบ:
หากคุณมีแบบฟอร์มดังกล่าว:
<form id="myform">
...
</form>
คุณสามารถใช้รหัส jQuery ต่อไปนี้เพื่อทำอะไรบางอย่างก่อนที่จะส่งแบบฟอร์ม:
$('#myform').submit(function() {
// DO STUFF...
return true; // return false to cancel form action
});
submit
ฟังก์ชั่นไม่ควรที่จะผูกกับโดยตรง$('#form')
โดยไม่มีฟังก์ชั่นเปล่า ๆ แก้ไข: เอกสารชี้ให้เห็นว่าการเรียกใช้ฟังก์ชันโดยรอบไม่จำเป็นต้อง
$(document).ready()
ฟังก์ชั่นของ jQuery ซึ่งทำให้แน่ใจได้ว่า DOM นั้นเสร็จสมบูรณ์ก่อนที่จะแนบsubmit
เหตุการณ์ หาก JS ของคุณอยู่ด้านล่างสุดของหน้าไม่จำเป็น แต่ถ้าอยู่ใน<head>
ส่วนคุณจำเป็นต้องใช้ ดู: stackoverflow.com/q/13062246/135108
สมมติว่าคุณมีรูปแบบเช่นนี้:
<form id="myForm" action="foo.php" method="post">
<input type="text" value="" />
<input type="submit" value="submit form" />
</form>
คุณสามารถแนบ - onsubmit
เหตุการณ์กับ jQuery เช่นนี้:
$('#myForm').submit(function() {
alert('Handler for .submit() called.');
return false;
});
หากคุณreturn false
ไม่ได้ส่งแบบฟอร์มหลังจากฟังก์ชั่นถ้าคุณส่งคืนจริงหรือไม่มีอะไรจะส่งตามปกติ
ดูเอกสารประกอบ jQueryสำหรับข้อมูลเพิ่มเติม
คุณสามารถใช้onclick
เพื่อเรียกใช้ JavaScript หรือรหัส jQuery ก่อนที่จะส่งแบบฟอร์มเช่นนี้:
<script type="text/javascript">
beforeSubmit = function(){
if (1 == 1){
//your before submit logic
}
$("#formid").submit();
}
</script>
<input type="button" value="Click" onclick="beforeSubmit();" />
ตรวจสอบให้แน่ใจว่าปุ่มส่งไม่ใช่ประเภท "ส่ง" ทำให้เป็นปุ่ม จากนั้นใช้เหตุการณ์ onclick เพื่อเรียกใช้จาวาสคริปต์ คุณสามารถทำสิ่งที่คุณต้องการก่อนที่จะโพสต์ข้อมูลของคุณได้
onsubmit
ของรูปแบบซึ่งจะยิงว่าการส่งแบบฟอร์มไม่มี