利用JS 阻止表单提交
情景一:不存在Ajax异步操作
1 使用背景:会议室预定管理系统中,当表单提交的时候需要验证预约的时间是否符合预定规则(不需要通过访问服务器),否则提示错误信息,阻止表单提交。
2 相关技术点:
form的两个事件
- submit,提交表单,如果直接调用该函数,则直接提交表单
- onSubmit,提交按钮点击时先触发,然后触发submit事件。如果不加控制的话,默认返回true,因此表单总能提交。
3 Demo
页面代码:
1 @using (Html.BeginForm(null, null, null, FormMethod.Post, new { onSubmit = "returncheck();" })) // 注意:此处事件的写法:onsubmit = "return + 事件名()"
{
<input type="text" name="name">
<input type="submit" value="提交">
4 }
JS代码:
function check(){
if (document.testform.name.value=="admin") {
alert("姓名不正确");
return false;
}
else{
return true;
}
}
情景二:需要Ajax异步操作
1 使用背景:会议室预定管理系统中,当表单提交的时候需要验证预约的时间是否符合预定规则(需要通过访问服务器数据判断),否则提示错误信息,阻止表单提交。
2 相关技术点:
在下面的例子中,通过onsubmit() 方法阻止提交无效的,因为, JS 中 Ajax 部分与 其他部分是异步进行的,或者说同时进行,代码执行(过程A)1/5行后直接执行23行,与此同时(过程B)6/22行也在进行,显然过程B的执行进度会慢,所以还没有等到判断返回值,A就已经执行完毕,默认Str是true,所以ajax中的判断是无效的。
示例: Javascript代码:
$("#save").click(function mysubmit() {
var str;
var startime = $("#datetime1").val();
var endtime = $("#datetime2").val();
var num = $("#mark").val();
$.ajax({
type: "POST",
url: "/MeettingRoom/meetting",
data: { strattime: startime, endtime: endtime, num: num },
success: function (sesponseTest) {
if (sesponseTest == "1") {
str = false;
document.getElementById("metend").style.display = "block";
}
else {
str = true;
document.getElementById("metend").style.display = "none";
}
}
});
return str;
}); //
<form onsubmit = "return check()"></form>
3 化解方法Demo:
Javascript代码:
<script>
$("#save").click(function mysubmit() {
var str;
var startime = $("#datetime1").val();
var endtime = $("#datetime2").val();
var num = $("#mark").val();
$.ajax({
type: "POST",
url: "/MeettingRoom/meetting",
data: { strattime: startime, endtime: endtime, num: num },
success: function (sesponseTest) {
if (sesponseTest == "1") {
str = false;
document.getElementById("metend").style.display = "block";
}
else {
str = true;
document.getElementById("metend").style.display = "none";
$("#form").submit(); // 将提交的进程放在判断过程中,被迫提交操作等待后台访问完毕后执行
}
} }); });
</script>
<button class="btn blue" type="button" id ="save" ><i class="icon-ok"></i>保存</button>
2016/04/12 ------神奇的Javascript。
利用JS 阻止表单提交的更多相关文章
- 利用js阻止表单提交
(1) return false <form name="loginForm" action="login.aspx" method="post ...
- js阻止表单提交
<!DOCTYPE html><html><head> <title>Simple Login Form</title> < ...
- js阻止表单提交的两种方法
下面直接看代码. <!DOCTYPE html> <html lang="en"> <head> <meta charset=" ...
- jsp——js事件修改属性样式的两种方法(直接赋值、修改属性)、验证表单符合某要求、阻止表单提交、告诉浏览器不要缓存
代码 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncodi ...
- js 在表单提交前进行操作
最近在写页面的时候,需要手动写一些在表单进行提交前的验证操作,正好看到了2种阻止表单提交的方法,可以进行一些逻辑处理 方法一:使用return false 原生js写法: <form id=&q ...
- form表单验证失败,阻止表单提交
form表单验证失败,阻止表单提交 效果演示: 贴上完整代码: <!DOCTYPE html> <html lang="en"> <head> ...
- Javascript阻止表单提交
Javascript阻止表单提交 Html 1.<form name="loginForm" action="login.aspx" method=&qu ...
- onsubmit阻止表单提交
在实际开发中往往会遇到检查表单数据的合法性,如果数据不合法,就不让其提交. <!DOCTYPE html> <html> <head> <meta chars ...
- JQuery阻止表单提交的方法总结 - 使用onsubmit()验证表单并阻止非法提交
方法1:<form onsubmit="javascript:confirm()"> 方法内返回false阻止表单提交 示例:代码检测textarea内填写的长度,未填 ...
随机推荐
- python常用函数 A
1.any() iterable元素是不是全为0 2.all() iterable元素是不是有0 a = [1, 2, 3] b = [1, 0, 3] c = [0, 0, 0] # an ...
- jQuery.data() 的实现方式
jQuery.data() 的作用是为普通对象或 DOM Element 附加(及获取)数据. 下面将分三个部分分析其实现方式: 1. 用name和value为对象附加数据:即传入三个参数,第 ...
- oo的一些概念
http://docs.kissyui.com/5.0/guides/base/oo.html JavaScript 语言自成体系,自有一套代码重用的模式,这些常见的代码重用模式可以在<Java ...
- 解决Can’t finish GitHub sharing process Successfully created project ‘GitHubDemo’ on GitHub
Can't finish GitHub sharing process Successfully created project 'KeyWordsFrameWork' on GitHu ...
- laravel 文件删除
删除文件 <?php class demo{ public function del(){ $disk = Storage::disk('public');//获取磁盘实例 $disk-> ...
- Flask--init和run启动研究---xunfeng巡风实例篇
第一: 首先在view目录下的__init__.py文件定义好 (1) Flask实例 : app = Flask(__name__) (2) 数据库实例 Mongo = Conn.MongoDB(a ...
- zju 3209 dancing links 求取最小行数
题目可以将每一个格子都看做是一列,每一个矩形作为1行,将所有格子进行标号,在当前矩形中的格子对应行的标号为列,将这个点加入到十字链表中 最后用dlx求解精确覆盖即可,dance()过程中记得剪枝 #i ...
- bzoj3875 【Ahoi2014】骑士游戏 spfa处理后效性动规
骑士游戏 [故事背景] 长期的宅男生活中,JYY又挖掘出了一款RPG游戏.在这个游戏中JYY会 扮演一个英勇的骑士,用他手中的长剑去杀死入侵村庄的怪兽. [问题描述] 在这个游戏中,JYY一共有两种攻 ...
- Hybris Virtualjdbc Extension
作者:Eason 编写日期:2018/07/31 联系方式:13920409462 1. Extension 说明 virtualjdbc extension 提供了虚拟JDBC驱动程序的实现. 通过 ...
- 洛谷——P1546 最短网络 Agri-Net
P1546 最短网络 Agri-Net 题目背景 农民约翰被选为他们镇的镇长!他其中一个竞选承诺就是在镇上建立起互联网,并连接到所有的农场.当然,他需要你的帮助. 题目描述 约翰已经给他的农场安排了一 ...