1、问题描述

model代码如下:

remote对应的action如下:

view代码如下:

单击按钮时,执行如下动作

当点击按钮时,我们发现,虽然后台action验证失败,但 还是执行返回true,目测是因为remote验证采用的ajax 异步方式,并不等待remote的执行验证,所以返回了true。

2、解决方法

<script type="text/javascript">
var intervalPending = null;
function remoteCheck() {
var validator = $("form").data("validator");
alert(validator.pendingRequest);
if (validator.pendingRequest == 0) {
// requests are done
// clear interval clearInterval(intervalPending);
// re-enable our "submit" button // "click" the hidden button
if ($("form").valid()) {
alert(111);
}
}
// we will try again after the interval passes
}
$(function () {
$("#test").click(function () {
intervalPending = setInterval('remoteCheck()', 1000);
})
})
</script>

3、原理说明

我们需要解决的问题是,在执行$("form").valid()时等待remote的执行。

思路如下:

  • 1、使用
$("form").data("validator").pendingRequest

来确定remote是否执行完毕(remote全部执行完毕之后,$("form").data("validator").pendingRequest的值为0)

2、创建一个计时器,

intervalPending = setInterval('remoteCheck()', 1000);

每隔一秒钟就判断一次remote的执行情况,是否已经全部执行完毕,当执行完毕之后,清除计时器,执行我们自己的动作,否则,继续循环判判断。

4、参考链接

http://stackoverflow.com/questions/7840634/how-to-get-unobtrusive-jquery-remote-validator-to-perform-async

jQuery Validation ,调用valid方法时,不验证remote的更多相关文章

  1. 解决 jQuery validation插件 valid()方法总是返回true的问题

    在表单元素验证方法中加入了 remote 方法,调试一直返回true,后来才知道因为是异步验证,所以才会出现此问题,解决方法就是在 remote 方法中,禁用 异步和缓存,具体代码如下 : ..... ...

  2. C#编译器优化那点事 c# 如果一个对象的值为null,那么它调用扩展方法时为甚么不报错 webAPI 控制器(Controller)太多怎么办? .NET MVC项目设置包含Areas中的页面为默认启动页 (五)Net Core使用静态文件 学习ASP.NET Core Razor 编程系列八——并发处理

    C#编译器优化那点事   使用C#编写程序,给最终用户的程序,是需要使用release配置的,而release配置和debug配置,有一个关键区别,就是release的编译器优化默认是启用的.优化代码 ...

  3. SQL Server 调用 C# 方法实现正则表达式验证

    Ø  前言 1.   在 SQL Server 中默认是不支持正则表达式验证的,如果需要某个字符串匹配一个正则表达式的验证规则,就需要额外的编写 C# 方法,并发布到 SQL Server 数据库中. ...

  4. JS常用方法总结,及jquery异步调用后台方法实例

    //前台接收get参数值 function getQueryString(name) {            var queryStrings = window.location.search.sp ...

  5. c# 如果一个对象的值为null,那么它调用扩展方法时为甚么不报错

    如果一个对象的值为null,那么它调用扩展方法时会报错吗? Person p = null ; p.ExtendMethod(); 上述代码出现的情况不会报错,刚开始遇到这种情况时很纳闷,就去问了大牛 ...

  6. Android app启动activity并调用onCreate()方法时都默默地干了什么?

    Android app启动activity并调用onCreate() 方法时都默默地干了什么?   在AndroidManifest.xml文件中的<intent-filter>元素中有这 ...

  7. Jmeter的BeanShell中报错:调用bsh方法时出错Error invoking bsh method: eval

    报错内容:ERROR - jmeter.util.BeanShellInterpreter: Error invoking bsh method: eval In file: inline evalu ...

  8. asp.net如何在前台利用jquery Ajax调用后台方法

    一 :最近因为帮同事开发项目使用到了asp.net,而我又想实现Ajax异步请求....从网上查询了一下资料之后,原来在asp.net中利用Ajax调用后台方法同样很简单,为了便于自己以后查看,特将此 ...

  9. jQuery validate 的valid()方法一直返回true

    1 调用$('#myForm').valid(),一直返回ture eg:html <form id="myForm"> <input class="f ...

随机推荐

  1. 有效管理进程的几个linux命令

    一般来说,应用程序进程的生命周期有三种主要状态:启动.运行和停止.如果我们想成为称职的管理员,每个状态都可以而且应该得到认真的管理.这八个命令可用于管理进程的整个生命周期. 启动进程 启动进程的最简单 ...

  2. VUE -- Identifier 'n_type' is not in camel case

    Identifier 'n_type' is not in camel case 参数名的 `_` 去掉就好了

  3. https证书制作及springboot配置https

    1.生成秘钥 openssl genrsa -out private.key 2048 2.生成用于申请请求的证书文件csr,一般会将该文件发送给CA机构进行认证,本例使用自签名证书 openssl ...

  4. OLAP、OLTP的介绍CBO/RBO

    OLTP与OLAP的介绍 数据处理大致可以分成两大类:联机事务处理OLTP(on-line transaction processing).联机分析处理OLAP(On-Line Analytical ...

  5. linux下如何使rtc设备注册为指定的设备文件/dev/rtc1?

    答: 通过设备树中的aliases节点来指定即可; 如某rtc设备的节点名为rtc@68,那么想让系统为该设备生成指定的设备文件/dev/rtc1,那么就在设备树的根节点中增加aliases节点,示例 ...

  6. SQL-W3School-高级:SQL DEFAULT 约束

    ylbtech-SQL-W3School-高级:SQL DEFAULT 约束 1.返回顶部 1. SQL DEFAULT 约束 DEFAULT 约束用于向列中插入默认值. 如果没有规定其他的值,那么会 ...

  7. Linux学习:使用 procrank 测量系统内存使用情况

    程序员应该了解一个基本问题:我的程序使用了多少内存?这可能是一个简单的问题,但是对于像Linux这样的虚拟内存操作系统,答案是相当复杂的,因为top和ps给出的数字不能简单相加.进程中两个最常见的内存 ...

  8. 阶段5 3.微服务项目【学成在线】_day03 CMS页面管理开发_03-自定义查询页面-前端

    下拉选择框 <!--查询表单--> <el-form :model="params"> <el-select v-model="params ...

  9. python 时间对比

    import datetimed1 = datetime.datetime.strptime('2015-03-05  17:41:20', '%Y-%m-%d %H:%M:%S')d2 = date ...

  10. golang继承与接口

    继承 结构体 Go语言的结构体(struct)和其他语言的类(class)有同等的地位,但Go语言放弃了包括继 承在内的大量面向对象特性,只保留了组合(composition)这个最基础的特性. 组合 ...