2012-01-23 9 views
1

私はjquery Form Wizardを使用しており、カスタム検証ルールを作成したいと考えています。jqueryフォームウィザードを使用してカスタム検証を書く

私の現在の問題は、フィールドをURLとして検証することですが、ユーザーが "http://"プレフィックスを追加するのを忘れた場合、これを拒否せずにサーバー側。

この検証には現在urlクラスが使用されていますが、このオプションはサポートされていません。解決するために、urlバリデータの代わりにカスタム正規表現を使用したいと思います(基本的には、URLフィールドにピリオドがあり、少なくとも5文字以上の長さであることを確認してください)。

jquery-ui-form-wizardで正規表現を使用するか、コールバック関数を呼び出して検証することができませんでした。注 - 提出するだけでなく、各ステップで検証したいと思います。

は、私は、フォーム・ウィザードのオプションに以下を追加し、私のコールバックが呼び出された - しかし、それはfalseを返した場合でも、まだ次のクリックすると次のページに進み:

remoteAjax: { 
    "page1" : { 
    url: "./validateWizard1", 
    dataType: "json", 
    beforeSend: function() { 
     // This code is called before "page1" is turned. 
     return false; 
    }, 
    success: handleValidateSubmit 
    } 
} 

私はどちらかに設定したいと思いますカスタムエラーメッセージ(検証プラグインへの標準的な方法で表示される)、またはURLメッセージを再利用します。

これを達成する最もよい方法は何ですか?ここで

答えて

0

は月Sundman、jqueryのフォーム・ウィザードの著者(彼は彼の代わりにそれを投稿するために私に尋ねた)からの答えです:

私が正しくあなたの質問を理解していれば、あなたがやりたいですbeforeAndを使用して サーバーに要求が送信される前に、beforeSendメソッドで の検証が行われていますか?

あなたが正しく理解していれば、 入力を検証するための検証プラグインを使用していますが、URLルールはあなたのニーズをサポートしていませんか?もしそうなら、 http://docs.jquery.com/Plugins/Validation/Validator/addMethod を使って新しいメソッドを追加することができます。そこでは、regexpと好きなものを使うことができます。

つまり、ウィザードのbeforeSendメソッドは、falseを返しても、 はajax呼び出しを切断していないようです。これはバグであり、私は は今後のリリースでそれを修正するためのメモを作成します。

これを回避するには、 (フォームプラグインによって提供される)の代わりにbeforeSubmitコールバックを使用してみてください。例えば:

remoteAjax: { 
"page1" : { 
    url: "./validateWizard1", 
    dataType: "json", 
    beforeSubmit: function() { 
    // This code is called before "page1" is turned. 
    return false; 
    }, 
    success: handleValidateSubmit 
} 
} 

これが役立ちます。

+0

'addMethod'へのポインタは正しくありました - それはとても簡単です - 例をチェックしてください:http://docs.jquery.com/Plugins/Validation/Validator/addMethod#examples – ripper234

関連する問題