如何在表中为select td编写选择器

时间:2012-06-17 18:30:43

标签: jquery jquery-selectors

我有这个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。

请帮帮我。谢谢所有

2 个答案:

答案 0 :(得分: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() } } }); }); 吗?这将是这样的:

{{1}}

答案 1 :(得分:1)

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

的单个警报

DEMO: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'))
    }
});