0

このようなものから始めます

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

} );

フィールドのいずれかが空の場合に投稿しないのではなく、リストされているすべてのフィールド/フィールドタイプが空でない限り投稿したいことを除いて。すべてのアイテムを手動でチェックするのではなく、セレクター文字列を使用してこれを行う方法はありますか?

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

4

3 に答える 3

1

$.grep条件を満たす要素の配列を返すために使用できます。

ここで、いずれかの要素に値がある場合、それはtrueコールバックから返され、length少なくとも1に強制されtrueます。

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

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

別の可能性として、attribute-not-equals-selectorを使用することもできますが、お勧めしません。

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

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

于 2012-04-13T19:50:03.560 に答える
0

必要なすべての入力とテキストエリアをループして変数を設定しtrue(最初は に設定されてfalseいます)、空でない入力に遭遇したときにループを破ることができます。次に、ループが完了した後、変数が true かどうかを確認します。

于 2012-04-13T19:48:27.057 に答える
0

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

$("#myform").validate();
$("a.check").click(function() {
    alert("Valid: " + $("#myform").valid());
    return false;
});
于 2012-04-13T19:50:11.053 に答える