为什么人们总是在不需要的时候使用 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,请查看this documentation on 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 是回调函数引用。 Reference
<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 是您的controller 内的框架提供的范围。 Reference
-
反应
<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 属性。 Reference
-
其他框架/库
请参阅您的框架的文档。
验证
您始终可以在 JavaScript 中进行验证,但对于 HTML5,我们也有原生验证。
<!-- Must be a 5 digit number -->
<input type="number" required pattern="\d{5}">
您甚至不需要任何 JavaScript!只要不支持本机验证,您就可以回退到 JavaScript 验证器。
演示:http://jsfiddle.net/DerekL/L23wmo1L/