1

div同じクラスのタグが 5 つあります。各divタグには、テキストボックスと数字付きのドロップダウンリストがあります。

これらすべてのdivタグのテキストボックスとドロップダウンリストが空かどうか、および「何かをする」かどうかを確認するにはどうすればよいですか。

$stepdivすべてのタグを含む配列です。

var $step = $(".wizard-step2:visible");

私の Textbox には class がCommentあり、私の Dropdownlist には class がありGradeます。

これまでにコーディングしましたが、間違っています。各divタグをチェックするのではなく、すべてをチェックしたいのです。

これは間違っているコードです:

var Comment = $step.find(".Comment").val();
var Grade = $step.find(".Grade").val();

for (var i = 0; i < $step.length; i++) {
    if (Comment != null && Grade > 0) { {
        // do this
    }
    } else {
        alert("You must enter both fields");
    }
}

編集:

私の質問をうまく説明できなかったと思います。私のコードは、この質問で得たすべての回答と同じように機能します。各 div タグをチェックするために、この if ステートメントを作成したくありません。すべての div タグに空のフィールドがあるかどうかを確認できるようにしたいと考えています。

ユーザーはフィールドを空のままにすることができますが、すべての div タグ フィールドが入力されている場合は何かを行います。

各 div タグに対して if ステートメントを実行したくありません。すべての div タグに空のフィールドがある場合、またはすべてがフィールドである場合は、if ステートメントを実行したいと考えています。

5 つの div タグがあるとします。そのうちの 4 つを埋めましたが、最後の 1 つを埋めたときに 5 つの div タグが埋められました。ここで私はこの「何かをする」ことを望んでいます。そうでなければ何も起こらないはずです。塗りつぶされた div タグ 1、2、3、4 で if ステートメントを実行したくありません。5 番目が塗りつぶされたときに if ステートメントが発生するようにしたいのですが、これは、すべての div タグが塗りつぶされているためです。それ以外の場合は何も起こりません。

4

5 に答える 5

1

各クラスの塗りつぶされた要素を見つけ、結果の選択の長さを使用してテストを実行します。

var $step = $(".wizard-step2:visible");

// returns true if the element's value is not null
function filled() {
    return !!this.value;
}

// count the number of non-empty elements
var n_step     = $step.length; 
var n_comments = $step.find('.Comment').filter(filled).length;
var n_grades   = $step.find('.Grade'  ).filter(filled).length;

if (n_comments === n_step && n_grades === n_step) {
     // all filled
} else if (n_comments === 0 && n_grades === 0) {
     // all empty
} else {
     // mixed - do nothing
}
于 2012-05-04T10:49:24.457 に答える
1

このようなもの:

$(".wizard-step2:visible").each(function(){
    var Comment = $(this).find(".Comment").val();
    var Grade = $(this).find(".Grade").val();

    if (Comment != '' && Grade > 0) {
    {
        // do this
    } else {
        alert("You must enter both fields");
    }
});
于 2012-05-04T10:38:01.173 に答える
0

jQuery メソッドを使用して、div の配列each()を反復処理する必要があります。$(".wizard-step2:visible")

これを達成する方法を示すために作成したこのjsFiddleを見てください

編集 :

これは jsFiddle コードの要点です: -

$('.wizard-step2:visible').each(function(){

    var txtBox = $(this).find('.comment');
    var Select = $(this).find('.Grade');
    var thisDiv = $(this).attr('id');

    if(txtBox.val().length > 0 && Select.val().length > 0)
    {
        alert("values for " +thisDiv+ " are fine");
    }
    else
    {
        alert("please fill in both values for " + thisDiv);
    } 
});
于 2012-05-04T10:51:39.797 に答える
0

次のようなそれぞれの中にコメントを入れるようにしてください

    var bOK, Comment, Grade ;
        $step.each(function(){
        Comment = $(this).find(".Comment").val();
        Grade = $(this).find(".Grade").val();
if(put your condition here)
else {
bOK = false;
return false
}
        });
// Now test your condition with bOK
于 2012-05-04T10:38:13.987 に答える
0

次のように、コレクションまたは配列を反復処理できます。

$(".wizard-step2:visible").each(function(count){
    var isCommentEmpty = $(this).find(".comment").val().length == 0;
    if(isCommentEmpty){
        alert('Comment on div ' + count + ' is empty!';
    }
});
于 2012-05-04T10:39:39.433 に答える