1

クラスname="dd"のドロップダウンが7つあります。クラス名が="tt"のテキストボックスが7つあります。各テキストボックスは、各ドロップダウンに対応しています。今、私はチェックする必要があります

if(dropdown value is equal to 1)
    text box can not be empty.

だから私がやっていることをこれを行うには:

function checkOpenHours() {
        if ($('.dd').val() == 1 && $('.tt').val() == "") {

                alert("Please select an opening hour.");
                return false;

        }
    }

そして私はこの関数を次のように呼び出しています

<asp:Button ID="btnSave" runat="server" Text="Update hour" Height="35px" 
        onclick="btnSave_Click" OnClientClick="return checkOpenHours()"/>

ただし、問題は、これは最初のドロップダウンとテキストボックスでのみ機能することです。他の6つのドロップダウンとテキストボックスでは機能しません..!!

私は何が間違っているのですか?何か助けはありますか?

4

2 に答える 2

2

この.val()メソッドは、jQueryオブジェクトの最初の要素から値を返します。

代わりにこれを行うことができます:

function checkOpenHours() {
    var $dd = $('.dd'),
        $tt = $('.tt'),
        i;

    for (i = 0; i < $dd.length; i++) {
        if ($dd.eq(i).val() == 1 && $tt.eq(i).val() == "") {
            alert("Please select an opening hour.");
            return false;
        }
    }
}

私が行っているのは、最初に結果$('.dd')$('.tt')変数を変数に入れることです。ループで$('.dd')とを使用すると$('.tt')機能しますが、反復ごとにそれらを再作成する(DOMアクセスで完了する)ため、非効率的です。次に、この.eq()メソッドiを使用して、現在のインデックスの要素を取得しています。

外部関数から簡単に戻ることができるためfor、jQueryではなく標準を使用しています。.each()

于 2012-08-16T09:14:43.720 に答える
1

val()jQueryコレクションの最初の要素の値のみを返します。

おそらくこれに使用する必要があります.each()

何かのようなもの

var allOkay = true;
$('.dd').each(function(id, item) {
    var $dropDown = $(item);
    var $textbox = $dropDown.siblings('.tt') // You'll need to change this according to your HTML!

    if ($dropDown.val() == 1 && $textbox.val() == '') {
        allOkay = false;
    }
});
if (!allOkay) {
    alert("Ze opening hourz! You did not enter zem!")
}
于 2012-08-16T09:17:28.143 に答える