如何监听 javascript 中的表单提交事件?
2022-08-30 02:03:53
我想编写自己的表单验证javascript库,我一直在谷歌上寻找如何检测是否点击了提交按钮,但我找到的只是代码,你必须在html中使用onClick on。onSubmit="function()"
我想制作这个javascript,这样我就不必触及任何html代码,比如添加onSubmit或onClick javascript。
我想编写自己的表单验证javascript库,我一直在谷歌上寻找如何检测是否点击了提交按钮,但我找到的只是代码,你必须在html中使用onClick on。onSubmit="function()"
我想制作这个javascript,这样我就不必触及任何html代码,比如添加onSubmit或onClick javascript。
为什么人们总是在没有必要的时候使用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
}
回调
是要在提交表单时调用的函数。
关于 ,请查看 MDN 上的此文档。EventTarget.addEventListener
要取消本机事件(阻止提交表单),请在回调函数中使用 .preventDefault(),
submit
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(){ /*...*/ };
反应
<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 验证器。
这是最简单的方法,你可以在发生时调用自己的javascript函数。onSubmit
断续器
<form>
<input type="text" name="name">
<input type="submit" name="submit">
</form>
JavaScript
window.onload = function() {
var form = document.querySelector("form");
form.onsubmit = submitted.bind(form);
}
function submitted(event) {
event.preventDefault();
}