我的表格如下:
<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变量返回请求类型的所有选定值的值,而不仅仅是同一行中的值...我被卡住了。请帮忙。
答案 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>
。