开发者

removeAttr("selected") showing error in IE6

I have two listboxes set with multiple property and on adding the items from first to second, I don't want the selection on the second listbox.

I wrote the code like this

$("#<%=lbCommcatTo.ClientID%> option").removeAttr("selected");

It worked in IE7 but not in IE6. Can anyone please give me a solution?

The html is

<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>

and the script goes like this

$("#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
                         {
                   开发者_JAVA百科         $("#<%=lbCommcatFrom.ClientID%>").css("height","230");
                            $("#<%=lbCommcatFrom.ClientID%>").parent().css("overflow-y","hidden");  
                         }  
                         $("#imgMoveRight").css("cursor","pointer");     
                     }                     
                 }

                 **$("#<%=lbCommcatFrom.ClientID%> option").removeAttr("selected");**
            });


You can try using "attr"

$("#<%=lbCommcatTo.ClientID%> option").attr("selected", "");

[Source]

Have a look here: [Link] more specifically read that:

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!
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜