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