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

最新文章

  1. Autofac全面解析系列(版本:3.5) – [使用篇(推荐篇):1.类型注册]
  2. iOS多线程之GCD详解
  3. C# 退出程序方法
  4. OC中属性及方法
  5. hdu 2120 Ice_cream&#39;s world I
  6. SQL技术内幕-10 in和exists 性能比较
  7. Headfirst设计模式的C++实现——观察者模式(Observer)
  8. 3111: [Zjoi2013]蚂蚁寻路 - BZOJ
  9. What Can I Do With This Major?
  10. [C#] c# 验证手机号码 最新的17手机号
  11. 解決 centos中-bash: vim: command not found
  12. Java自学手记——Java中的关键字
  13. web发展阶段简介
  14. apply 和call 的区别,apply实用小技巧
  15. spring学习总结(一)_Ioc基础(上)
  16. linux下查看当前目录属于哪个分区?
  17. 使用Python生成双色球号码
  18. Game of War - Fire Age 有何特别之处?
  19. 打造基于jQuery的日期选择控件
  20. oracle数据库 expdp/impdp 和 exp/imp

热门文章

  1. PSO算法
  2. 讨论SQLite数据库损坏与修复
  3. delphi10.3.1不支持.net 5
  4. 通过Vagrant搭建PHP环境(一) Vagrant box添加配置
  5. 常见浏览器userAgent请求头信息
  6. PyTorch Tutorials 1 PyTorch是什么?
  7. [转]SQL 读取表结构
  8. Windows 7开发:UAC数据重定向 - Win32 Native
  9. iOS 11适配
  10. nginx服务报错解决