0

私はこのhtmlコードを持っています

<table style="width: 100%;">
            <tr>
                <td>
                    ID
                </td>
                <td>
                    <input id="Text1" type="text" class="b" />
                </td>
            </tr>
            <tr>
                <td>
                    Name
                </td>
                <td>
                    <input id="Text2" type="text" class="b" />
                </td>
            </tr>
            <tr>
                <td>
                    Family
                </td>
                <td>
                    <input id="Text3" type="text" class="b" />
                </td>
            </tr>
            <tr>
                <td colspan="2">
                    <input id="Button1" type="button" value="Click Me" />
                </td>
            </tr>
        </table>

ユーザーがテキストを入力せず、兄弟の td を選択し、td でテキストを取得する場合、このコードを書いていますが、機能していません

        $(function () {
            $("#Button1").click(function () {
                var ls = $(".b");
                alert(ls.length);
                for (var i = 0; i <= ls.length - 1; i++) {
                    if ($(ls[i]).val() == "") {
                        alert("hi");
                        var ctx = $(ls[i]).parent("td").parent().siblings();;
                        alert($(ctx).val());
                        //
                        alert(ctx.length);

                    }
                }
            });
        });

たとえば、Text1 のユーザーが ID を入力してボタン 1 を押すと、アラート ID を表示したいとします。

私を助けてください。皆さんありがとう

4

2 に答える 2

1

たとえば、Text1 のユーザーが ID を入力してボタン 1 を押すと、アラート ID を表示したいとします。

それで、値を持たないを含む のtd直前のを見つけたいですか? それは次のようになります。tdinput

$(function () {
    $("#Button1").click(function () {
        var ls = $(".b");
        var input;
        alert(ls.length);
        // Note that rather than using a `for` loop, you might
        // look at using jQuery's `each` function
        for (var i = 0; i < ls.length - 1; i++) {
            // Get a jQuery wrapper for this `input` element
            input = $(ls[i]);

            // Is it empty?
            if (input.val() == "") {
                // Yes, traverse up to the `td`, then get the previous `td`
                var ctx = input.closest("td").prev();

                // Show its text (or html); note that it's not `val`, `td`
                // elements don't have a *value*, they have text/markup
                alert(ctx.text()); // Or ctx.html()
            }
        }
    });
});
于 2012-06-17T18:34:39.603 に答える
1

空の項目ごとに 1 つのアラートではなく、すべての空の項目をカバーする 1 つのアラートを次に示します。

デモ: http://jsfiddle.net/RCHss/

$("#Button1").click(function() {
    var empty_items = [];
    $(".b").each(function() {
        if ($(this).val() == '') {
            empty_items.push($.trim($(this).parent().prev().text()));
        }
    });
    if (empty_items.length) {
        alert('Please fill in :\n\n' + empty_items.join('\n'))
    }
});
于 2012-06-17T18:48:14.027 に答える