我有一个ASP.NET ListBox,在更改时我需要在(单个或多个)警报中显示(单个或多个)所选文本。警报的数量应该等于所选项目的数量。我尝试了以下代码,在这里我得到一个额外的警报,显示ListBox中的第一个项目。我哪里出错了?
<asp:ListBox ID="ListBox1" runat="server" Width="100px"
SelectionMode="Multiple">
<asp:ListItem Selected="True" Value="1">White</asp:ListItem>
<asp:ListItem Selected="False" Value="2"> Silver </asp:ListItem>
<asp:ListItem Value="3"> Dark Gray </asp:ListItem>
<asp:ListItem Value="4"> Khaki </asp:ListItem>
<asp:ListItem Value="5"> Dark Khaki </asp:ListItem>
</asp:ListBox>
$(document).ready(function () {
$("#ListBox1 ").change(function () {
$("option").each(function () {
if (this.selected) {
alert(this.text);
}
});
});
});
请帮忙。
感谢。
答案 0 :(得分:1)
我认为发生的事情是你的asp代码在HTML中呈现列表项:
...
<option value="1" selected="true">
<option value="2" selected="false">
...
由于属性“selected”在两种情况下都存在,如果属性设置为true或false,则检查this.selected将返回true,因为“selected”存在于任何一种方式。
实现相同目标的更简单方法是替换它:
$("#ListBox1 ").change(function () {
$("option").each(function () {
if (this.selected) {
alert(this.text);
}
});
});
用这个:
$('#ListBox1').find('option:selected').map(function () {
alert.log($(this).text());
});