【问题标题】:jQuery code working on Chrome and Mozilla web browser but not on Internet ExplorerjQuery 代码可在 Chrome 和 Mozilla 网络浏览器上运行,但不能在 Internet Explorer 上运行
【发布时间】:2012-06-05 10:46:10
【问题描述】:

我在 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");

我们将不胜感激。

【问题讨论】:

  • 我还有其他问题,代码在 chrome 和 FF 上工作,而不是在 IE8-7 上
  • 您是否尝试将输入参数添加到函数confirmMessage 以捕获链接按钮?例如function confirmMessage(link){} 然后if($(link).attr("text") == "Active"
  • @palakmehta 你能把这行放在函数alert($(obj).attr("text")); 的开头,看看它返回什么吗?附带说明一下,您不应该为链接按钮使用 ID 属性,因为这会生成具有相同 ID 的多个元素,请改用类。
  • 嗨 Jsang,我实际上是 Jquery 的新手。所以不确定如何用类来实现它。之间,当我把代码“alert($(obj).attr("text"));”使用 Chrome/Mozilla 时,它运行良好,但使用 Internet Explorer 时,它给了我“未定义”

标签: c# jquery .net


【解决方案1】:

您的问题很可能与不同浏览器之间的字符串比较差异以及 text-from-DOM 生成机制的差异有关。有没有试过在调试器(如IE9开发者工具/脚本标签)下查看,IE下返回$(obj).attr("text")是什么?

此外,比较文本的方法无论如何都不是很可靠(例如,在您的LinkButtonText 发生任何更改后,它都会失败)。我建议您改用类或不同的链接按钮,例如:

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

    <asp:LinkButton ID="Button1" runat="server" Text="Active" 
    OnClientClick="return confirmMessage(this);" CssClass="button-activate" />
    
  2. 然后使用以下 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

【讨论】:

    【解决方案2】:

    没有称为“文本”的属性,ASP.NET 服务器控件的“文本”属性在客户端被转换为“值”属性。

    你需要这样引用值:

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

    或者更简单地说:

    $(obj).val();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-02-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-20
      相关资源
      最近更新 更多