ทำไมคนถึงใช้ jQuery อยู่เสมอเมื่อไม่จำเป็น?
ทำไมผู้คนถึงใช้ JavaScript ธรรมดา ๆ ไม่ได้?
var ele = /*Your Form Element*/;
if(ele.addEventListener){
ele.addEventListener("submit", callback, false); //Modern browsers
}else if(ele.attachEvent){
ele.attachEvent('onsubmit', callback); //Old IE
}
callback
เป็นฟังก์ชันที่คุณต้องการเรียกใช้เมื่อมีการส่งแบบฟอร์ม
เกี่ยวกับEventTarget.addEventListener
ตรวจสอบเอกสารเกี่ยวกับเรื่องนี้ MDN
หากต้องการยกเลิกsubmit
เหตุการณ์ดั้งเดิม(ป้องกันไม่ให้ส่งแบบฟอร์ม) ให้ใช้.preventDefault()
ในฟังก์ชันเรียกกลับของคุณ
document.querySelector("#myForm").addEventListener("submit", function(e){
if(!isValid){
e.preventDefault(); //stop form from submitting
}
});
ฟังsubmit
เหตุการณ์ด้วยห้องสมุด
หากคุณตัดสินใจว่าจำเป็นต้องใช้ห้องสมุดด้วยเหตุผลบางประการ (คุณใช้ไลบรารีอยู่แล้วหรือไม่ต้องการจัดการกับปัญหาข้ามเบราว์เซอร์) รายการวิธีรับฟังเหตุการณ์ส่งในไลบรารีทั่วไป
jQuery
$(ele).submit(callback);
ele
การอ้างอิงองค์ประกอบของฟอร์มอยู่ที่ไหนและcallback
เป็นการอ้างอิงฟังก์ชันการเรียกกลับ การอ้างอิง
<iframe width="100%" height="100%" src="http://jsfiddle.net/DerekL/wnbo1hq0/show" frameborder="0"></iframe>
AngularJS (1.x)
<form ng-submit="callback()">
$scope.callback = function(){ /*...*/ };
ตรงไปตรงมามาก$scope
ขอบเขตที่กำหนดโดยกรอบงานภายในคอนโทรลเลอร์ของคุณอยู่ที่ไหน การอ้างอิง
เกิดปฏิกิริยา
<form onSubmit={this.handleSubmit}>
class YourComponent extends Component {
// stuff
handleSubmit(event) {
// do whatever you need here
// if you need to stop the submit event and
// perform/dispatch your own actions
event.preventDefault();
}
// more stuff
}
เพียงแค่ส่งตัวจัดการไปที่onSubmit
เสา การอ้างอิง
เฟรมเวิร์ก / ไลบรารีอื่น ๆ
อ้างถึงเอกสารของกรอบงานของคุณ
การตรวจสอบ
คุณสามารถตรวจสอบความถูกต้องของคุณใน JavaScript ได้ตลอดเวลา แต่ด้วย HTML5 เรายังมีการตรวจสอบความถูกต้องดั้งเดิม
<!-- Must be a 5 digit number -->
<input type="number" required pattern="\d{5}">
คุณไม่จำเป็นต้องใช้ JavaScript! เมื่อใดก็ตามที่ไม่รองรับการตรวจสอบความถูกต้องแบบเนทีฟคุณสามารถเปลี่ยนกลับไปใช้โปรแกรมตรวจสอบ JavaScript ได้
การสาธิต: http://jsfiddle.net/DerekL/L23wmo1L/
document.forms['yourForm'].onsubmit = function(){}
? หรือaddEventListener
?