jQuery代码在Chrome和Mozilla网络浏览器上运行,但在Internet Explorer上不起作用
本文关键字:运行 但在 Internet 不起作用 Explorer 浏览器 代码 Chrome 网络 Mozilla jQuery | 更新日期: 2023-09-27 18:36:15
我在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");
帮助将不胜感激。
您的问题很可能与不同浏览器之间的字符串比较差异以及 DOM 文本生成机制的差异有关。您是否尝试过在调试器(例如 IE9 开发人员工具/脚本选项卡)下查看 IE 下返回$(obj).attr("text")
的内容?
此外,比较文本的方法无论如何都不是很可靠(例如,在LinkButton
的Text
发生任何更改后,它都会失败)。我建议您依靠类或不同的链接按钮,例如:
-
对 LinkButton 使用以下标记:(请注意 CssClass 属性):
<asp:LinkButton ID="Button1" runat="server" Text="Active" OnClientClick="return confirmMessage(this);" CssClass="button-activate" />
-
然后使用以下 JavaScript:
function confirmMessage(obj) { if ($(obj).is(".button-activate")) { return confirm("Convert from active to inactive"); } else { return confirm("Convert from inactive to active"); } }
当您的按钮不再是"激活"而是"停用"时,只需将任何其他CssClass
值放入LinkButton
即可。
没有名为"text"的属性,ASP.NET 服务器控件"Text"属性在客户端转换为"value"属性。
您需要按如下方式引用该值:
$(obj).attr("value");
或者更简单地说:
$(obj).val();