Ajax-вызов после успешной проблемы проверки JQuery - PullRequest
0 голосов
/ 20 ноября 2011

Использование RSV jQuery Validation отсюда .

Действительно застрял в одном месте. Я написал собственный обработчик ошибок для этого плагина (читайте документацию, это разрешено), теперь он показывает ошибки и фокусируется на точных полях одно за другим, затем в конце проверки мой пользовательский обработчик return (errorInfo.length == 0) ? true : false; возвращает true, если нет ошибка. Проблема в том, что после этого rsv напрямую отправляет данные формы в PHP. Но я хочу запустить функцию Ajax после успешной проверки. Я написал другую функцию wellDone() для события "on complete", кажется, что плагин вообще не запускает функцию oncomplete. Пожалуйста, помогите мне решить эту проблему.

$(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 голосов
/ 20 ноября 2011

Возможно, вам следует кэшировать значение true или false, которое вы возвращаете из функции customErrorHandler, в переменную (которая будет доступна для всех функций, выполняющих вызовы ajax) и использовать ее, чтобы определить, следует ли запускать вызов ajax или нет.

0 голосов
/ 08 января 2012

Ваш 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**   
}

см. Последнюю строку кода и ее комментарий?ВСЕГДА возвращайте false: -)

0 голосов
/ 20 ноября 2011

Если вы используете customErrorHandler, то на самом деле onCompleteHandler никогда не будет вызываться.Предполагается, что вы называете это сами в конце вашего customErrorHandler, когда errorInfo.length == 0.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...