jQuery代码在Chrome和Mozilla Web浏览器上运行,但在Internet Explorer上运行

时间:2012-06-05 10:46:10

标签: c# jquery .net

我在aspx文件上有以下代码:

<asp:GridView ID="GridView1"  runat="server" ShowFooter="true"  
AutoGenerateColumns="False" >
   <Columns>
            <asp:TemplateField>
              <ItemTemplate>
<asp:LinkButton ID="Button1" runat="server" Text="Active" OnClientClick="return 
confirmMessage(this);" />
             </ItemTemplate>
    </Columns>
</asp:GridView>

我有以下Jquery /客户端代码

function confirmMessage(obj)
{
if ($(obj).attr("text")=="Active")
{
return confirm("Convert from active to inactive");
}
else
{
return confirm("Convert from inactive to active");
}
}

上面提到的代码在Mozilla和Chrome浏览器上工作正常但是在Internet Explorer的情况下,它总是执行第二个块,即

return confirm("Convert from inactive to active");

帮助将不胜感激。

2 个答案:

答案 0 :(得分:0)

您的问题很可能与不同浏览器之间的字符串比较差异以及文本与DOM生成机制的差异有关。您是否尝试在调试器(例如IE9开发人员工具/脚本选项卡)下查看,返回IE下的$(obj).attr("text")是什么?

此外,比较文本的方法无论如何都不是很可靠(例如,在Text的{​​{1}}发生任何变化后,它会失败。我建议您依赖类或不同的链接按钮,例如:

  1. 对LinkBut​​ton使用以下标记:(注意CssClass属性):

    LinkButton
  2. 然后使用以下JavaScript:

    <asp:LinkButton ID="Button1" runat="server" Text="Active" 
    OnClientClick="return confirmMessage(this);" CssClass="button-activate" />
    
  3. 当您的按钮不再“激活”而是“停用”时,只需将任何其他function confirmMessage(obj) { if ($(obj).is(".button-activate")) { return confirm("Convert from active to inactive"); } else { return confirm("Convert from inactive to active"); } } 值添加到CssClass

答案 1 :(得分:0)

没有名为'text'的属性,ASP.NET服务器控件'Text'属性在客户端转换为'value'属性。

您需要将值引用为:

$(obj).attr("value");

或更简单地说:

$(obj).val();