Answers:
为什么人们总是在不需要时使用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
用库事件如果出于某种原因您决定需要一个库(您已经在使用一个库,或者不想处理跨浏览器的问题),则可以使用以下方法在普通库中侦听Submit事件:
jQuery的
$(ele).submit(callback);
哪里ele
是表单元素引用,并且callback
是回调函数引用。参考
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验证程序。
这是onSubmit
发生事件时调用自己的javascript函数的最简单方法。
的HTML
<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();
}
bind
确实是不必要的。
根据您的要求,您还可以在没有jQuery之类的库的情况下执行以下操作:
将此添加到您的头上:
window.onload = function () {
document.getElementById("frmSubmit").onsubmit = function onSubmit(form) {
var isValid = true;
//validate your elems here
isValid = false;
if (!isValid) {
alert("Please check your fields!");
return false;
}
else {
//you are good to go
return true;
}
}
}
而且您的表格可能仍然看起来像:
<form id="frmSubmit" action="/Submit">
<input type="submit" value="Submit" />
</form>
addEventListener
代替onsubmit或onload来允许其他开发人员添加自己的侦听器。
document.forms['yourForm'].onsubmit = function(){}
呢?还是addEventListener
?