我有两个设置了多个属性的列表框,并且在从第一个到第二个添加项目时,我不希望在第二个列表框上进行选择。
我写了这样的代码
$("#<%=lbCommcatTo.ClientID%> option").removeAttr("selected");
它在IE7中有效,但在IE6中无效。有谁能请给我一个解决方案?
html是
<table cellspacing="0" cellpadding="0" width="100%" border="0">
<tr>
<td width="45%">
<div style="height: 230px;width: 234px; overflow: auto; border: solid 1px #c1c1c1" id="dvLeft" runat="server">
<select id="lbCommcatFrom" runat="server" style="height:790px;" multiple name="lbCommcatFrom" class="ContentTextNormal">
</select>
</div>
</td>
<td width="10%" align="center">
<div style="border: solid 1px #6E6E6E; width: 20px; height: 20px; padding-top: 4px; text-align: center; margin-bottom: 5px; background-color: #CECFBE; cursor: pointer" title="Add to List" id="imgMoveRight" class="clsArrow">
</div>
<div style="border: solid 1px #6E6E6E; width: 20px; height: 20px; padding-top: 4px; text-align: center; background-color: #CECFBE; cursor: default" title="Remove from List" id="imgMoveLeft" class="clsArrow">
</div>
</td>
<td width="45%">
<div style="height: 230px;width: 234px; overflow: auto; border: solid 1px #c1c1c1" id="dvRight" runat="server">
<select id="lbCommcatTo" runat="server" style="height:230px;width:234px" multiple name="lbCommcatTo" class="ContentTextNormal">
</select>
</div>
</td>
</tr>
</table>
并且脚本就像这样
$("#imgMoveRight").click(function(){
$("#<%=lbCommcatFrom.ClientID%> option:selected").appendTo("#<%=lbCommcatTo.ClientID%>");
if( $("#<%=lbCommcatFrom.ClientID%> option").length == 0)
{
$("#<%=lbCommcatFrom.ClientID%>").parent().css("overflow-x","hidden");
$("#<%=lbCommcatFrom.ClientID%>").parent().css("overflow-y","hidden");
$("#<%=lbCommcatFrom.ClientID%>").css("width","234px");
$("#<%=lbCommcatFrom.ClientID%>").css("height","230px");
$(this).css("cursor","default");
}
else
{
if($("#<%=lbCommcatTo.ClientID%> option").length > 0)
{
$("#<%=lbCommcatTo.ClientID%>").parent().css("overflow-x","scroll");
$("#<%=lbCommcatTo.ClientID%>").css("width","465");
$("#<%=lbCommcatFrom.ClientID%>").css("width","465");
if($("#<%=lbCommcatTo.ClientID%> option").length > 15)
{
$("#<%=lbCommcatTo.ClientID%>").css("height",$("#<%=lbCommcatTo.ClientID%> option").length * 18);
$("#<%=lbCommcatTo.ClientID%>").parent().css("overflow-y","scroll");
}
else
{
$("#<%=lbCommcatTo.ClientID%>").css("height","230");
$("#<%=lbCommcatTo.ClientID%>").parent().css("overflow-y","hidden");
}
$("#imgMoveLeft").css("cursor","pointer");
}
}
**$("#<%=lbCommcatTo.ClientID%> option").removeAttr("selected");**
});
$("#imgMoveLeft").click(function(){
$("#<%=lbCommcatTo.ClientID%> option:selected").appendTo("#<%=lbCommcatFrom.ClientID%>");
$("#<%=lbCommcatFrom.ClientID%>").css("width","465");
if( $("#<%=lbCommcatTo.ClientID%> option").length == 0)
{
$("#<%=lbCommcatFrom.ClientID%>").parent().css("overflow","scroll");
$("#<%=lbCommcatTo.ClientID%>").parent().css("overflow-x","hidden");
$("#<%=lbCommcatTo.ClientID%>").parent().css("overflow-y","hidden");
$("#<%=lbCommcatTo.ClientID%>").css("width","232px");
$("#<%=lbCommcatTo.ClientID%>").css("height","230px");
$(this).css("cursor","default");
}
else
{
if($("#<%=lbCommcatFrom.ClientID%> option").length > 0)
{
$("#<%=lbCommcatFrom.ClientID%>").parent().css("overflow-x","scroll");
if($("#<%=lbCommcatFrom.ClientID%> option").length > 15)
{
$("#<%=lbCommcatFrom.ClientID%>").css("height",$("#<%=lbCommcatFrom.ClientID%> option").length * 16);
$("#<%=lbCommcatFrom.ClientID%>").parent().css("overflow-y","scroll");
}
else
{
$("#<%=lbCommcatFrom.ClientID%>").css("height","230");
$("#<%=lbCommcatFrom.ClientID%>").parent().css("overflow-y","hidden");
}
$("#imgMoveRight").css("cursor","pointer");
}
}
**$("#<%=lbCommcatFrom.ClientID%> option").removeAttr("selected");**
});
答案 0 :(得分:1)
您可以尝试使用“attr”
$("#<%=lbCommcatTo.ClientID%> option").attr("selected", "");
[Source]
看看这里:[Link]更具体地说:
If you wrap the code that sets selected in a setTimeout it works, surprisingly enough.
I have to assume it needs to give control back to the browser to let state settle.
Another way to get this to work is to wrap the code that sets selected in a try/catch
block and just swallow the error from IE. It seems to set the element as selected properly
despite the error!