【问题标题】:jquery validation problemsjquery验证问题
【发布时间】:2010-03-26 09:37:51
【问题描述】:

为了自定义验证输入,我编写了一个脚本:

function cardNumberCheck(value, element) {
        var res = false;
        $.get("/CaseHistories/ValidateCardNumber",
  { caseHistoryId: $('#CaseHistory_Id').val(), cardNumber: $('#CaseHistory_CardNumber').val() },
   function(data) { res = data });
      //alert(res) => works fine return true/false
        return res;
    }

    $.validator.addMethod("cardValidate",
 cardNumberCheck, "invalid");


    if ($('#CaseHistory_CardNumber').is("form *")) { //<= check if elem is in a form
        $('#CaseHistory_CardNumber').rules("add", {
            required: true,
            cardValidate: true,
            messages: {
                required: "*",
                cardValidate: "invalid"
            }
        });
    }

编辑: 所需的规则工作正常,但我的验证方法不会消除消息。
即使元素数据没有通过 cardNumberCheck 验证,提交也能正常工作

这里有什么不对?

【问题讨论】:

    标签: jquery asp.net-mvc jquery-validate


    【解决方案1】:

    这部分:

    $.get("/CaseHistories/ValidateCardNumber",
      { caseHistoryId: $('#CaseHistory_Id').val(), 
        cardNumber: $('#CaseHistory_CardNumber').val() },
      function(data) { res = data });
        //alert(res) => works fine return true/false
        return res;
    }
    

    是异步的,它返回 undefined 因为成功函数直到稍后服务器响应数据时才会运行(无论多快,它肯定是在您的 JavaScript 继续运行之后)。它会发出警报,因为警报实际上是在稍后发生的,因为它是在数据返回时触发的……在验证代码运行之后。要进行同步回调,您需要这样做:

    function cardNumberCheck(value, element) {
      var res;
      $.ajax({
        async: false,
        url: "/CaseHistories/ValidateCardNumber",
        data: { caseHistoryId: $('#CaseHistory_Id').val(), 
                cardNumber: $('#CaseHistory_CardNumber').val() },
        success: function(data) { res = data });
      }
      return res;
    }
    

    【讨论】:

    • 我在你伤心的时候同步做了。但验证消息仍然不显示。它出什么问题了?有什么线索吗?
    • 即使cardNumberCheck返回true或false,它仍然提交数据
    • @CoffeeCode - 如果您将 return res; 替换为 alert(res); return res;,它会提示 true、false 还是 undefined?
    猜你喜欢
    • 2018-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-17
    • 2017-08-29
    • 1970-01-01
    相关资源
    最近更新 更多