2011-09-16 17 views
5

jQuery validateを使用して入力を検証しています。 マイコード:バリデーターjQueryを使用してClickイベントでフォームを検証する

$('#button').click(function() {  
    $("#form").validate({    
     rules: { 
      phone: { 
       required: true, 
       number: true, 
       rangelength: [7, 14] 
      } 
     } 
    }); 
}); 

そしてHTML:このコードは動作していない

<form id="form" name="form" method="post" action=""> 
<input id="phone" name="phone" class="required" type="text" /> 
<div class="button" id="send_b">Send</div> 
</form> 

。 jQueryのこの行を追加すると、クリックイベント内にjQueryの行が追加されます。

$("#form").submit(); 

しかし、私はフォームを提出したくないので、クリックして検証するだけです。

誰でもこれを行う方法を知っていますか?

+0

「機能していません」の詳細を指定してください。あなたはそれを期待していないのですか? – BishopRook

+0

IIRC 'validate()'はバリデーションを行いません。*バリデーションの検証を設定します。コードが短絡しているかどうかを調べたり、呼び出すことができるメソッドがあるかどうかは実際に検証するだけです。 –

答えて

13

ただ、手動ですぐに検証をトリガーする.form()を追加します(デフォルトの動作は、提出イベント待ち):

$('#button').click(function() {  
    $("#form").validate({    
    rules: { 
     phone: { 
     required: true, 
     number: true, 
     rangelength: [7, 14] 
     } 
    } 
    }).form(); 
}); 
+0

クール!!できます!どうもありがとう! – novellino

0

あなたのコードは、ボタンのclickイベントに関数を結合されます。あなたがやっていることは、「このボタンがクリックされたときにフォームの検証をフォームに適用する」ということです。

これは、検証プラグインを使用する間違った方法です(これはthis検証プラグインを使用していると仮定しています)。代わりに、メソッドをform要素に直接実行するだけです。プラグインはsubmitイベントを処理します。

したがって、clickイベントバインディングを削除してください。

+0

私はただ1つの入力ボックスを検証していて、その値がリンクのパラメータであるという問題に直面しました。しかし、私はあなたが自動的にonclickを検証するのは間違いないと思います。 – yardpenalty

0

クリックイベントを使用してフォームメソッドform()を使用してください。

関連する問題