zoukankan      html  css  js  c++  java
  • jQuery Validation ,调用valid方法时,不验证remote

    1、问题描述

    model代码如下:

    image

    remote对应的action如下:

    image

    view代码如下:

    image

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

    image

    当点击按钮时,我们发现,虽然后台action验证失败,但image 还是执行返回true,目测是因为remote验证采用的ajax 异步方式,image并不等待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

  • 相关阅读:
    没有上司的舞会
    邮票面值设计
    小木棍
    简单的试炼
    区间质数
    加工生产调度
    泥泞的道路
    总数统计
    中庸之道

  • 原文地址:https://www.cnblogs.com/madboy/p/3208476.html
Copyright © 2011-2022 走看看