情景一:不存在Ajax异步操作

1 使用背景:会议室预定管理系统中,当表单提交的时候需要验证预约的时间是否符合预定规则(不需要通过访问服务器),否则提示错误信息,阻止表单提交。

2 相关技术点:

form的两个事件

  1. submit,提交表单,如果直接调用该函数,则直接提交表单
  2. 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 阻止表单提交的更多相关文章

  1. 利用js阻止表单提交

    (1) return false <form name="loginForm" action="login.aspx" method="post ...

  2. js阻止表单提交

    <!DOCTYPE html><html><head>    <title>Simple Login Form</title>    < ...

  3. js阻止表单提交的两种方法

    下面直接看代码. <!DOCTYPE html> <html lang="en"> <head> <meta charset=" ...

  4. jsp——js事件修改属性样式的两种方法(直接赋值、修改属性)、验证表单符合某要求、阻止表单提交、告诉浏览器不要缓存

    代码 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncodi ...

  5. js 在表单提交前进行操作

    最近在写页面的时候,需要手动写一些在表单进行提交前的验证操作,正好看到了2种阻止表单提交的方法,可以进行一些逻辑处理 方法一:使用return false 原生js写法: <form id=&q ...

  6. form表单验证失败,阻止表单提交

    form表单验证失败,阻止表单提交 效果演示: 贴上完整代码: <!DOCTYPE html> <html lang="en"> <head> ...

  7. Javascript阻止表单提交

    Javascript阻止表单提交 Html 1.<form name="loginForm" action="login.aspx" method=&qu ...

  8. onsubmit阻止表单提交

    在实际开发中往往会遇到检查表单数据的合法性,如果数据不合法,就不让其提交. <!DOCTYPE html> <html> <head> <meta chars ...

  9. JQuery阻止表单提交的方法总结 - 使用onsubmit()验证表单并阻止非法提交

    方法1:<form onsubmit="javascript:confirm()"> 方法内返回false阻止表单提交 示例:代码检测textarea内填写的长度,未填 ...

随机推荐

  1. C# Updating

    闪开,这篇博文仅作笔记C#处理. 用来记录在学习/使用C#的过程中的Point,持续更新或成文后大幅删减 1,定义类,当声明类的对象后,类中的方法并不会被执行,构造函数会在声明类的对象时,被触发,没有 ...

  2. 用AOP来让你的JS代码变得更有可维护性吧

    此文已由作者吴佳祥授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 好吧我承认这是篇任务. 最近看到个消息,ES2017已经定稿了,心想,我去,还完全没了解ES2016呢,ES ...

  3. 关联及web_reg_save_param

    一.什么是关联 关联(correlation):脚本回放过程中,客户端发出请求,通过关联函数所定义的左右边界值(也就是关联规则),在服务器所响应的内容中查 找,得到相应的值,已变量的形式替换录制时的静 ...

  4. 0元免费领《JAVA日志》教程,天啦噜!

    天啦,老码疯了!辛辛苦苦,费心费力准备的<java日志实战及解析>教程真的不要钱了吗? 作为添物网的小编,每天看着老码为了给大家录制课程,加班加点的做课件,为了保证课程的质量,老码一遍又一 ...

  5. Poj1704:staircase nim【博弈】

    题目大意:有一个无限长的一维的棋盘,棋盘上N个格子放置着棋子.两个人轮流操作,每次操作能选择其中一个棋子向左移动,但不能越过其它棋子或者两枚棋子放在同一格中,最后不能操作的人算输,问先手是否必胜? 思 ...

  6. Codeforces474E - Pillars

    Portal Description 给出一个\(n(n\leq10^5)\)的正整数序列\(\{a_n\}(a_i\leq10^{15})\)和正整数\(d(d\leq10^9)\),求\(\{a_ ...

  7. Codeforces603E - Pastoral Oddities

    Portal Description 初始时有\(n(n\leq10^5)\)个孤立的点,依次向图中加入\(m(m\leq3\times10^5)\)条带权无向边.使得图中每个点的度数均为奇数的边集是 ...

  8. ascii 和 byte以及UTF-8的转码规则

    多年来闲麻烦,只记录笔记,不曾编写BLOG,本文为原创,如需转载请标明出处 废话不说,直奔主题 ascii     计算机只接受 “高”.“低”电压,所以使用二进制  1  和  0 分别代表高低电压 ...

  9. Atlantis(hdu1542)

    题意:求n个矩阵的面积并. /* 线段树维护扫描线 把每个矩形看成两条线段,从左到右添加线段,如果是矩形左边的线段,那就给线段所在的区间(y值)cover+1,反之则cover-1. 并且如果这条线段 ...

  10. msp430入门编程45

    msp430中C语言的人机交互--独占CPU菜单