我创建了两个JQuery插件:_formValidator.validate()
和refreshTime
在插件_formValidator.validate()
中。我有一个错误消息生成函数,名称为buildError
,
我点击按钮即可调用这两个插件。
我想知道插件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 :(得分: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();
}
}
}
答案 1 :(得分: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;
重置的位置。