循环遍历表以获取下拉值

时间:2012-12-13 13:36:30

标签: jquery

我的表格如下:

<table id="tblFileUpload" cellpadding="2" cellspacing="2" class="styled">
    <tr>
        <td align="left">
            <asp:FileUpload ID="fileUpload1" runat="server" size="50" />
        </td>
        <td align="left">
            <asp:DropDownList ID="ddlRequestType1" runat="server" DataTextField="Value" DataValueField="Key" CssClass="ddl"></asp:DropDownList>
        </td>
        <td align="left">
            <asp:DropDownList ID="ddlStatusType1" runat="server" DataTextField="Value" DataValueField="Key" CssClass ="ddl2">
            </asp:DropDownList>
            <label class="badFileUploadRow">*</label>
        </td>
    </tr>
    <tr>
        <td align="left">
            <asp:FileUpload ID="fileUpload2" runat="server" size="50" />
        </td>
        <td align="left">
            <asp:DropDownList ID="ddlRequestType2" runat="server" DataTextField="Value" DataValueField="Key" CssClass="ddl"></asp:DropDownList>
        </td>
        <td align="left">
            <asp:DropDownList ID="ddlStatusType2" runat="server" DataTextField="Value" DataValueField="Key"></asp:DropDownList>
            <label class="badFileUploadRow">*</label>
        </td>
    </tr>

它继续进行另外几行(都以相同的方式命名)

我应该只能为每个请求选择1个状态。我需要检查在更改任何给定状态类型时是否选择了重复的请求类型,并禁用该行的选定状态类型。

例如,

。如果我为requesttype1和requesttype3选择了“save”,然后在statustype3中选择了“some status”,我需要在requesttype1的同一行中禁用“某个状态”。

我现在有以下内容:

$(".ddl2").change(function () {
    var id = $(this).attr('id');
    var cssType = $(this).attr('class');
    var pos0 = id.indexOf('ddlStatusType'); // +14;
    var itemNo = id.substr(pos0);
    var seen = {};
    $('#tblFileUpload td')
        .each(function () {
        //find if multiple request types already exist.
        // if (cssType == "ddl") {
            var txt = $('.ddl :selected').text();
            if (seen[txt]) {//there is a duplicate
                //   $(this).remove();
            }
            else
                seen[txt] = true;
            // }
    });
});

txt变量返回请求类型的所有选定值的值,而不仅仅是同一行中的值...我被卡住了。请帮忙。

1 个答案:

答案 0 :(得分:2)

  

txt变量返回请求类型的所有选定值的值,而不仅仅是同一行上的值

当然好吧。这就是$('.ddl :selected')匹配的内容:具有selected伪类的每个元素,它是具有类ddl的元素的后代。使用更具体的选择器。

尝试将内部.each()更改为:

$('#tblFileUpload tr').each(function () {
    var txt = $(this).find('.ddl').val();
    if (seen[txt]) {//there is a duplicate
        //   $(this).remove();
    }
    else seen[txt] = true;
});

注意,最好在.val()上使用<select>,而不是自己寻找<option selected>