成功的jQuery验证问题后调用Ajax

时间:2011-11-20 11:26:15

标签: javascript ajax jquery jquery-validate

使用RSV jQuery验证from here

真的卡在一个地方。我为这个插件编写了自定义错误处理程序(阅读文档,它是允许的),现在它显示错误,并逐个关注确切的字段,然后在验证结束时我的自定义处理程序return (errorInfo.length == 0) ? true : false;如果没有错误,则返回true。问题是,在此rsv之后直接将表单数据发送给PHP。但是我想在成功验证后激活Ajax函数。我为"写完了另一个函数wellDone()"事件似乎插件根本不会触发完整的功能。请帮我解决这个问题。

$(document).ready(function() {
    $("#signup_form").RSV({
        onCompleteHandler: wellDone,
        customErrorHandler: errorHandler,
        rules: signup_rules
    });
}); 
function errorHandler(f, errorInfo)
{
    for (var i=0; i<errorInfo.length; i++)
    {
        // errorInfo[i][0] contains the form field node that just failed the validation, e.g.
        errorInfo[i][0].focus();
        // errorInfo[i][1] contains the error string to display for this failed field, e.g.
        $.notifyBar({
            cls: "error",
            html: errorInfo[i][1]
        });

    }

return (errorInfo.length == 0) ? true : false;
}

function wellDone(){
    signUp();
}

var signup_rules = [
<some validation rules>...
]

3 个答案:

答案 0 :(得分:0)

如果您使用customErrorHandler,则实际上永远不会调用onCompleteHandler。假设您在customErrorHandler errorInfo.length == 0时{{1}}结束时自行调用。

答案 1 :(得分:0)

可能你应该在一个变量中缓存你从customErrorHandler函数返回的true或false值(可以对所有执行ajax调用的函数使用)并使用它来确定是否触发ajax调用

答案 2 :(得分:0)

你的customErrorHanlder应该总是返回“false”,但不是“balabala?true:false”

  

适合那些对javascript感到满意且需要的人   几乎无法控制错误的呈现方式。它可以让你   定义您自己的自定义函数,该函数将传递错误列表   发生在表单提交上。这是一个提醒每个人的简单示例   错误反过来。注意:必须按顺序设置两个功能参数   正确传递错误信息。

customErrorHandler:

$(document).ready(function() {
  $("#demo_form1").RSV({
    customErrorHandler: myReturnFunction,
    rules: [
      // ...
    ]
  });   });
 /**    
  * @param f the form node    
  * @param errorInfo an array of arrays. Each sub-array has two elements: the field node and the error message.    
  */   
function myReturnFunction(f, errorInfo)   {
  for (var i=0; i<errorInfo.length; i++)
  {
    // errorInfo[i][0] contains the form field node that just failed the validation, e.g.
    errorInfo[i][0].focus();
    errorInfo[i][0].style.color = "red";

    // errorInfo[i][1] contains the error string to display for this failed field, e.g.
   alert(errorInfo[i][1]);
  }

  return false; // always return false! Otherwise the form will be submitted**   
}

查看最后一行代码及其注释?总是返回错误: - )