利用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常用函数 C
1. Counter(hashable) 直接使用统计可哈希元素每个元素的数量. 2. most_common:可以统计数量最多的n个元素. from collections import Count ...
- JavaScript变量声明提升
JavaScript代码在被解析引擎执行前,会被“编译”把变量声明等放在合适的作用域中,如果不了解这一点,会让人产生很多疑惑. 文章:详解js变量声明提升
- 【DFS】codeforces B. Sagheer, the Hausmeister
http://codeforces.com/contest/812/problem/B [题意] 有一个n*m的棋盘,每个小格子有0或1两种状态,现在要把所有的1都变成0,问最少的步数是多少?初始位置 ...
- Asp.Net Thread is being Aborted
Asp.Net做的一个程序,通过JQuery的Ajax调用,程序执行的数据时间比较长,程序部署到服务器后执行一段时间后就弹出执行失败的对话框,日志记录的错误信息是“正在中止线程”. 查错过程: 1.根 ...
- php中memcache与memcached的区别 【收藏】
说法一: 两个不同版本的php的memcached的客户端 new memcache是pecl扩展库版本new memcached是libmemcached版本功能差不多 说法二: Mem ...
- poj2186 求有向图G中所有点都能到达的点的数量
/*题意:有向图,求这样的点的数量:所有点都能到达它.缩点成有向无环图,思:如果该强连通有出度,那么 从该出度出去的边必然回不来(已经缩点了),所以有出度的强连通必然不是.那么是不是所有出度为0的强连 ...
- Python高级进阶(一)Python框架之Django入门
传说中的Django Django由来 Django是一个开放源代码的Web应用框架,由Python写成.采用了MVC的框架模式,即模型M,视图V和控制器C.它最初是被开发来用于管理劳伦斯出版集团旗下 ...
- Java调用WSDL接口
1.首先准备jar包: 2.代码调用如下: String url="url地址"; QName qName=new QName("命名空间","接口名 ...
- python绘图入门
python绘图入门 学习了:https://zhuanlan.zhihu.com/p/34200452 API:https://matplotlib.org/api/pyplot_api.html ...
- ExpandableListView的使用以及信息的高亮显示
ExpandableListView是ListView控件的延伸,它能够对数据进行分组显示和隐藏,并统计总数量.可进行滚动,对某一内容高亮显示. <1>编写xml布局文件,用于获取Expa ...