2012-03-26 9 views
3

私はフォームを送信するためにインライン関数を使用していますが、それは私が持っている検証スクリプトを呼び出すのではなく、誰かが答えの正しい方向に私を指すことができるかどうか疑問に思ったのですか?

マイボタン:

<a href="javascript:UpdateEnquiry();" id="continue_btn" class="btnSprite">Save</a> 

My機能:

function UpdateEnquiry() { 

$.ajax({ 
    url: 'test.php', 
    dataType: 'xml', 
    timeout: 15000, 
    type: 'post', 
    data: $('#validate').serialize(), 
    success: UpdateEnquirySuccess, 
    error: function (result) {parent.$.fancybox.close();} 
    }); 
} 

そして、私が前に提出しjqueryのvalidationEngineプラグインを初期化したいと思います。 http://www.position-absolute.com/articles/jquery-form-validator-because-form-validation-is-a-mess/

ご協力いただければ幸いです。

種類が レイチェル

答えて

4

があなたの検証エンジンがすでに初期化されていると仮定するとみなし、AJAXリクエストを行う前にvalidateメソッドを呼び出します。その方法はtrueを返した場合、先に進む:

function UpdateEnquiry() { 
    if ($(yourForm).validationEngine('validate')) { 
     $.ajax({ 
      ... 
     }); 
    } 
    else { 
     // The form didn't validate 
    } 

    return false; // Prevents default action from happening 
} 
+0

ありがとうございました!私は頻繁に私は解決策をovercomplicateので、全部のnoobie質問のために謝罪します。... – Rachel

+0

これは動作していません...その間違った答えのフォームは常にfalse ajaxがトリガーしていません。 – jack

+0

@jack私の答えは間違っていますか? 'validationEngine( 'validate')'は、[the docs](http://www.position-absolute.com/articles/jquery-form-validator-because-form-validation)によると、フォームが検証されると 'true'を返します。 -is-a-mess /)(常に 'false'を返す場合):a)フォームが間違っています。またはb)プラグインが間違っている。私が何かが欠落している場合は、詳細を記入してください。その答えを修正することができます。 – mgibsonbr

4
$('#registerform').submit(function(e) { 
       e.preventDefault(); 
       var vars = $("#registerform").serialize(); 

       if ($("#registerform").validationEngine('validate')) { 

        $.ajax({ 
          url:"sample.php" 
        }); 

       } 
      }); 

デフォルトの動作を停止することなく、私は自分のフォームのアクションページにリダイレクトされました。したがって、preventdefault()を使用しなければなりませんでした。 @mgibsonbr my bad

+0

フォームが検証されるかどうかに関わらず、デフォルトのアクションは起こらないはずです.Ajaxの呼び出しで置き換えられます。私はこのディテールを本当に忘れていました。 – mgibsonbr

+0

あなたが役に立つリンクをクリックすることを願って:) – jack

関連する問題