2012-04-13 10 views
0

がリストされているフィールド/フィールド・タイプのすべてが空でない限り、私はそれを投稿したい、代わりに掲示しないことを除いて、これjqueryを使用して、*フィールドに値があるかどうかを確認しますか?いずれかのフィールドが空の場合

$('#report-form').submit(function(){ 
    if (! $('#datetime, :checkbox, :radio, textarea').val()){ 
      alert('not posted'); 
      return false; 
     } else { 
      alert('posted'); 
     } 

}); 

のようなもので開始します。セレクタ文字列でこれを行い、手動ですべての項目をチェックしない方法はありますか?

変数が空白のときに変数をインクリメントする#each()関数を実行し、#がフィールドの数よりも少ない場合にのみ送信すると考えましたが、理想的にはもっと一般的なものを探していますチェックボックスやラジオボタン、テキスト入力やテキストエリアでの作業)。

+0

なぜjquery validateのようなものを使用しないのですか? – Dhiraj

+0

約$( '#datetime、:チェックボックス、:ラジオ、テキストエリア')。each()??? – chepe263

+0

バリデーションのドキュメントをすばやく見ていて、「少なくとも1つのフィールドを埋めなければならない」チェックボックスが組み込まれていることに気付かなかった – Damon

答えて

0

任意の入力とテキストエリアをループし、変数をtrue(元はfalseに設定されています)に設定し、空でない入力に遭遇したときにループを解除することができます。ループが完了した後、変数がtrueかどうかをチェックするだけです。

1

$.grepを使用すると、条件を満たす要素の配列を返すことができます。ここ

任意の要素が値を持つ場合、それはコールバックからtrueを返し、lengthtrueに強制変換、少なくとも1であろう。私はそれをお勧めしませんけれども

var any = !!$.grep($('#datetime, :checkbox, :radio, textarea'), function(el) { 
    return !!el.value; 
}).length; 

if (any) { 
    // there was at least one 
} 

は別の可能性は、属性-ない-等しいセレクタを使用しています。

if (!!$('input[value!=""]').length) 

それは属性をチェックするために主張し、実際.valueプロパティをチェックしているようです。これは私にとってバギーだ。ドキュメントが属性をチェックすると主張するので、おそらくそれを避けるでしょう。

0

メソッドvalid()を使用して、バリデーターを直接呼び出すことができます。

$("#myform").validate(); 
$("a.check").click(function() { 
    alert("Valid: " + $("#myform").valid()); 
    return false; 
}); 
関連する問題