2011-09-13 13 views
0

私はプラグインの中でjQueryフォームプラグインを拡張しようとしています。私は以下のコードを書いていますが、submitHandlerには無限ループがあります。Jqueryプラグインを拡張するhttp://bassistance.de/jquery-plugins/jquery-plugin-validation/

私のコードで何が間違っていますか?どうすれば修正できますか?

(function($) { 
    $.fn.extend({ 
    //plugin name - myvalidateform 
    myvalidate: function(options) { 
     //Settings list and the default values 
     var defaults = {  
     relues:null, 
     url:null, 
     password:0, 
     type:'get', 
     ajax:null 
     };  
     var o2 = $.extend(defaults, options);   
     return this.each(function() {   
     var o =o2; 
     var obj = $(this);     
     var formplugin= $(obj).validate({ 
      submitHandler: function(form) { 
      alert("a"); 
     $(form).submit(); 
     } 
     });   

     }); 
    } 
    }); 
})(jQuery); 

答えて

0

バリデーターがサブミットをオーバーライドしているので、ちょうど添付されているバリデーターをサブミットして呼び出すだけです。

(バリで)これを変更してみてください:

validator.settings.submitHandler.call(validator, validator.currentForm); 
if (validator.submitButton) { 
// and clean up afterwards; thanks to no-block-scope, hidden can be referenced 
    hidden.remove(); 
} 
return false; 

に:

if (validator.submitButton) { 
// and clean up afterwards; thanks to no-block-scope, hidden can be referenced 
    hidden.remove(); 
} 
return validator.settings.submitHandler.call(validator, validator.currentForm) ? true : false; 

あなたが提出したい場合は、提出してくださいsubmitHandlerに「trueを返し」を使用することができるはずですフォーム。今私は間違いを犯した可能性があり、それを行うためのより良い方法がありますが、少なくとも私はうまくいくかもしれない答えがあります。

jQueryプラグイン開発ガイドについては、私のウェブサイトもご確認ください。

+0

私は直接検証プラグインを使用しているので、それは問題ではないと思います。サブミットハンドラと連携して動作します –

+0

もちろん、サブミットハンドラで動作しますが、検証はサブミット時に呼び出されます。これでループが作成されます。 私が言ったように、私はそれが正しい解決策であることが間違っている可能性がありますが、あなたのループが起こっているかの背後にある理由は正しいはずです。 私はコードを見て他の提案はありません、私は示唆したものを試して、それが動作するかどうかを確認するか、私はあなたのために持っていない別の解決策を探し続けることができます。 すべてがうまくいくことを願って、幸運の男! :) –

関連する問題