0

2 つの JQuery プラグインを作成しました:_formValidator.validate()refreshTime in plugin _formValidator.validate()。名前がbuildErrorであるエラー メッセージ生成用の関数があり、ボタン クリックでこれら 2 つのプラグインを呼び出します。

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');
}
4

2 に答える 2

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();
         }
     }
}
于 2013-09-18T08:34:10.203 に答える
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;リセットがどこに行くのかを示唆することができません.

于 2013-09-18T09:08:18.393 に答える