0

私は5x5のテーブルを持っています。各セルはasp.netテキストボックスです。空でないテキストボックスを使用して、最後の行の5つのテキストボックス値をすべて取得したいと思います。例えば:

ここに画像の説明を入力してください

これはHELLOMYFRIENDを取得する必要があります

しかし、私はすべての値を取得しますが、最後(ND)です。どうしてか分かりません。これが私のコードです:

// RIGHT HERE, $(this) referes to the whole table
$(this).find('input[value!=""]')
        // I get the last edited textbox
        .last()
        // Go up to the parent <td>
        .parent('td')
        .siblings('td')
        // I get all my brothers of type input 
        .children(':input')
        .each(function () {
            alert($(this).val());
        });

私は何か間違ったことをしていますが、何ですか?ありがとうございました。

4

5 に答える 5

1

を使用parents()して検索し、trその中のすべてを検索する必要がありますinput

$(this).find('input[value!=""]')
       .last()
       .parents('tr')
       .find('input')
       .each(function () {
           alert($(this).val());
        });
于 2012-10-30T20:02:43.570 に答える
1

このようなものを使用できます..

$(this).find('input[value!=""]:last')
       .parents("tr:first")
       .find(":text")
       .each(...);
于 2012-10-30T20:02:52.947 に答える
1

問題は、現在選択されている要素と同じ親を持つ他の.siblings()すべての要素を返すときに呼び出すときにあります。この問題は、@Adrian、@Quintin Robinson、@Sushanth、および @wirey によって示されているように、DOM の別のステップをトラバースしてから子を選択することで解決できます。 <td><td>

他のすべての回答は問題を解決しましたが、何が問題なのかを説明しなかったため、回答を投稿して説明があると思いました。そして今、私があなたのコードを変更する方法は次のとおりです:)

$(this).find('input[value!=""]:last')
    .parents('tr')
    .find('td input')
    .each(function () {
        alert($(this).val());
    });
于 2012-10-30T20:30:16.673 に答える
1

あなたはこのようなことをすべきです

$(this).find('tr').filter(function() { // find all trs
    // returns the row if all inputs are filled  
    return $(this).find('input').filter(function() {
        return $(this).val().length > 0
    }).length == 5; // check to make sure row has 5 unempty textboxes
}).last() // get the last tr returned with no empty textboxes
.find('input').each(function() { // find inputs
    console.log($(this).val());
});​

http://jsfiddle.net/E5hnA/

あなたの問題は、行でフィルタリングするのではなく、最後の空でないテキストボックスを見つけて、そこからトラバースすることにあります。

$(this).find('input[value!=""]')  // find all inputs that are not empty
    .last() // get the last one

では、最後の行に空のテキスト ボックスがある入力がある場合はどうなるでしょうか。それがあなたが得ている行です。私の例でやっていることは次のとおりです。

すべての行を検索する > すべての入力が入力されているものをフィルターして返す > 返されたコレクションの最後の行を取得する > その後、何でもする - すべての入力が入力された最後の行があるので

于 2012-10-30T20:14:57.277 に答える
0

これを試して

$(this).find('input[value!=""]')

        .closest('tr')
        .prev('tr')
        .children(':input')
        .each(function () {
            alert($(this).val());
        });
于 2012-10-30T20:04:15.147 に答える