1

我有一张看起来像的桌子:

<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 都选择了“保存”,然后在 statustype3 中选择了“某些状态”,我需要在 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 变量返回请求类型的所有选定值的值,而不仅仅是同一行上的值……我被卡住了。请帮忙。

4

1 回答 1

2

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

嗯,当然。这就是$('.ddl :selected')匹配项:每个具有selected伪类的元素都是具有 class 的元素的后代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()在 a 上使用而<select>不是自己寻找<option selected>

于 2012-12-13T13:38:55.033 回答