jQuery Validation ,调用valid方法时,不验证remote

一、问题描述

model代码以下:javascript

image

remote对应的action以下:java

image

view代码以下:jquery

image

 

 

单击按钮时,执行以下动做ajax

image

当点击按钮时,咱们发现,虽而后台action验证失败,但image 仍是执行返回true,目测是由于remote验证采用的ajax 异步方式,image并不等待remote的执行验证,因此返回了true。异步

二、解决方法

 

<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>

 

 

 

 

 

 

 

三、原理说明

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

思路以下:spa

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

 

来肯定remote是否执行完毕(remote所有执行完毕以后,$("form").data("validator").pendingRequest的值为0)3d

二、建立一个计时器,code

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

每隔一秒钟就判断一次remote的执行状况,是否已经所有执行完毕,当执行完毕以后,清除计时器,执行咱们本身的动做,不然,继续循环判判断。orm

 

四、参考连接

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

相关文章
相关标签/搜索