2013-09-18 3 views
0

Я создал два плагина JQuery: _formValidator.validate() и refreshTime в плагине _formValidator.validate(). У меня есть функция для генерации сообщения об ошибке, имя которой buildError, , и я вызываю эти два плагина нажатием кнопки.Как узнать, когда запущена функция JQuery?

Я хочу знать, есть ли функция buildError в плагине _formValidator.validate() уволен, плагин refreshTime не срабатывает.

Мой код:

$(document).ready(function() { 
    $("#submitchangepassword").click(function() { 
     _formValidator.validate(); 
     refreshTime({ target: this }); 
    }); 
}); 

buildError код функции:

function buildError(config) { 
    var error = $('<div name="formError" id="formError' + config.controlToValidate.replace('#', '') + '" class="form-error-holder"><div class="form-error-icon"></div><div class="form-error"><span class="form-error">' + config.errormessage + '</span></div><div class="clear"></div></div>'); 
    error.hide(); 
    error.insertAfter(config.insertAfterControl); 
    error.show('fast'); 
} 
+0

Добавлять инструкции 'console.log' в свои функции, чтобы убедиться, что они выполнены. – abhshkdz

+0

thank's, я хочу, чтобы это было уволено, например: if (уволен) {refreshTime ({target: this})} – user2781200

+0

Просто установите флаг/значение в глобальной переменной при срабатывании соответствующего события. Один флаг за событие позволит вам делать все, что вы хотите. –

ответ

0

Есть несколько способов, чтобы проверить это. Самый простой способ добавить console.log, как

$("#submitchangepassword").click(function() { 
    console.log("submit password clicked!"); 
    _formValidator.validate(); 
    refreshTime({ target: this }); 
}); 

или вы можете добавить предупреждение:

$("#submitchangepassword").click(function() { 
    alert("submit password clicked!"); 
    _formValidator.validate(); 
    refreshTime({ target: this }); 
}); 

... лично я предпочитаю метод console.log. вы можете проверить вывод консоли в firefox или chrome, открыв консоль разработчика.

[править] я вижу, я неправильно понял вопрос

вам необходимо установить переменную, чтобы сделать это. поэтому, если ошибка возникает, вы устанавливаете глобальную переменную (давайте назовем ее anErrorOccured) на true. то вы можете сделать

$("#submitchangepassword").click(function() { 
    _formValidator.validate(); 
    if(!anErrorOccured){ 
     refreshTime({ target: this }); 
    } 
}); 

другой возможный подход заключается в том, что вы реализуете обратные вызовы:

$("#submitchangepassword").click(function() { 
    var self = this; 
    _formValidator.validate({ 
     onSuccess:function(){ 
      refreshTime({ target: self }); 
     }, 
     onError:function(){ 
      alert("an error occured"); 
     } 
    }); 
}); 

с _formValidator функция делает что-то вроде этого:

_formValidator(o){ 
    //check validity 

    if(isValid){ 
     if(o.onSuccess != undefined){ 
       o.onSuccess(); 
     } 
    } else { 
     if(o.onError != undefined){ 
       o.onError(); 
     } 
    } 
} 
+0

благодарю вас за ответ, но я думаю, что вы не правильно понимаете мою цель, база в вашем ответе, я хочу сделать это: $ ("# submitchangepassword"). Click (function() {_formValidator.validate(); if (_formValidator.validate (buildError) Notfired) {refreshTime ({target: this});}}); На самом деле, я хочу использовать _formValidator.validate(), и после этого, я проверяю, не запущена ли функция buildError (_formValidator.validate()) refreshTime. – user2781200

+0

Я отредактировал свой ответ ... надеюсь, что это более полезно. –

+0

опция, использующая переменную, была бы не такой хорошей, если есть параллельные операции, выполняемые –

0

На мой комментарий, я просто что-то значит например:

var buildErrorFired = false; // This is declared as a global 

$(document).ready(function() { 
    $("#submitchangepassword").click(function() { 
     if (!buildErrorFired){ 
      _formValidator.validate(); 
      refreshTime({ target: this }); 
     } 
    }); 
}); 

function buildError(config) { 
    buildErrorFired = true; 
    var error = $('<div name="formError" id="formError' + config.controlToValidate.replace('#', '') + '" class="form-error-holder"><div class="form-error-icon"></div><div class="form-error"><span class="form-error">' + config.errormessage + '</span></div><div class="clear"></div></div>'); 
    error.hide(); 
    error.insertAfter(config.insertAfterControl); 
    error.show('fast'); 
} 

Я не понимаю ваш проект достаточно хорошо, чтобы предложить, где может произойти перезагрузка buildErrorFired = false;.

Смежные вопросы