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一个,就在td包含input没有值的那个之前的那个?那将是这样的:

$(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

这是一个涵盖所有空项目的警报,而不是每个警报

演示: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 回答