[英]jQuery .submit() with validation and without page refresh
我有一个其他人似乎遇到的问题,但是我无法获得推荐的解决方案(即“ return false;”)来工作。 任何帮助将是巨大的!
描述:
提交表单后,我要验证输入的格式正确(即,键入=“ email”)并启动警报(即“表单已提交。”), 而无需刷新页面。 当前,警报不出现,并且页面刷新。
测试代码:
<!DOCTYPE html>
<html lang="en">
<head>
<!-- JavaScript -->
<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
</head>
<body>
<!-- Form -->
<form>
<input type="email" placeholder="Email" value="" size="25px" required="required" id="userEmail">
<button type="submit" id="submit">Submit</button>
</form>
<!-- Alert on Submission -->
<script>
console.log("Ready to Go!");
$('#submit').submit(function () {
alert("Form submitted.");
return false;
});
</script>
</body>
</html>
您将要捕获表单的submit
事件。 按钮上没有submit
事件。
$('form').submit(function () {
if (*everything ok*) {
alert("Form submitted.");
} else {
return false;
}
});
理想情况下,您将使用ID或类来帮助标识您的<form>
,即:
<form id="xyz-form">
然后将选择器更改为:
$('#xyz-form').submit(...);
现在,这只是在出现错误时阻止表单提交。 当return false;
不提交回调需要,你的页面会刷新路径。 如果您希望不刷新就将数据提交到服务器,则需要采取不同的方法。
给您的表单一个ID,然后将您的jquery改为使用#formid。
例如 :
<form id="form">
<input type="email" placeholder="Email" value="" size="25px" required="required" id="userEmail">
<button type="submit" id="submit">Submit</button>
</form>
<script type="text/javascript">
$('#form').submit(function () {
alert("Form submitted.");
return false;
});
</script>
附加到jQuery中的commit函数的事件处理程序可以是form元素或div元素。 有关j Query API的更多信息,您可以在用户单击Submit按钮时实现click事件,而无需使用jQuery的preventDefault函数进行默认的提交行为
console.log("Ready to Go!");
$('form').submit(function () {
alert("Form submitted.");
return false;
});
$("#submit").click(function(e){
if (hasError){
e.preventDefault();
}
else{
alert("success");
}
})
创建if和else语句是为了进行简单验证。 对于您的问题范围,我将大部分编码留给您使用。 但是您基本上可以创建一个简单的功能来检查用户输入是否有错误,如果有错误,请防止提交按钮的默认提交行为。 如果输入不为空且输入没有错误,请警告用户该表单已提交。
试试这个代替
$('#submit').click(function () {
alert("Form submitted.");
return false;
});
它会完成您想要的。
基本上,点击会在提交之前触发
试试这个片段来清理
console.log("Ready to Go!");
$('#submit').click(function () {
alert("Form submitted.");
//return false;
return true;
});
$("form").submit(function( event ) {
alert("woot woot");
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.