2016-06-21 15 views
0

私はjQuery検証スクリプトを正常に使用しています。しかし、今では1つのWebページに2つのフォームを入れる必要があります。JQueryの検証SubmitHandlerを複数のフォームに同じページに入れよう

Validateルールなどを標準化するコードが見つかりましたが、 "submitHandler"パートの内部で使用していたものを使用する方法がわかりません。私はそれを使ってスピナーgif(hide/show)を作りました。

しかし、同じページに2つのフォームがあると、どちらか一方がアクティブになり、どちらか一方がアクティブになるか、送信ボタンがクリックされたときにアクティブになりません。

これを分ける方法はありますか?

$(document).ready(function() { 
    $('form').each(function() { 
    $(this).validate({ 
     // edited out non-relevant code for this question // 

     submitHandler: function(form) { 

      $('#submitSpin').show(); 
      $('#submitButt').hide(); 
      form.submit(); 

     }, // END submitHandler 

    }); // END this validate 
    }); // END form each function 
}); // END document ready function 

明らかに、両方のフォームのボタンに同じIDを使用することはできません。私はそれらを別のものにすると、 "このフォームが提出されたら、これらのIDを表示/非表示にしますが、この他のフォームが提出されれば、この他のIDの表示/非表示" 。

+0

ちょうどその 'form.submit(のみ特定のフォームオブジェクトをターゲットと...同じように、' submitHandler'の 'form'引数を使用)'働く – Sparky

答えて

1

ちょうどform.submit()のように、submitHandlerに渡されたform引数をそのまま使用してください。フォームオブジェクトを表します。次に、jQueryを使ってスピナーを見つけてターゲットにします。

submitHandler: function(form) { 
    $(form).find('.submitSpin').show(); 
    $(form).find('.submitButt').hide(); 
    form.submit(); 
}, // END submitHandler 

ページ上の任意のidを二度と繰り返さないようにしてください、そうsubmitSpinsubmitButtはクラス名とすることができます。

概念実証DEMO:jsfiddle.net/0g0oaonL/2/

+1

大変ありがとうございます!!!!! – SyberKnight

+0

これはChromeで正常に動作することが判明しましたが、Safariでは動作しません。フォームは送信されますが、表示/非表示は行われません。うーん。 – SyberKnight

+0

@SyberKnight、私のjsFiddleデモはSafariを使って書かれ、うまく動作します。 jQuery '.show()'と '.hide()'は非常に簡単なメソッドであり、jQueryはSafariを含むブラウザ間で正常に動作するように正規化されているので意味がありません。 – Sparky

関連する問題