【问题标题】:Webkit browser autocomplete doesn't work with textboxes in ASP UpdatePanelWebkit 浏览器自动完成功能不适用于 ASP UpdatePanel 中的文本框
【发布时间】:2011-08-17 01:38:29
【问题描述】:

我有几个带有更新面板的页面,里面有 asp 文本框和提交按钮。但是,它们都不会触发 Chrome 或 Safari 的自动填充/自动完成功能,您之前输入的内容会在这些功能中得到建议。

它似乎适用于常规回发,但在 UpdatePanels 中我似乎无法让它工作。

在我看来,这应该是一个已知问题,但我找不到任何相关信息。

【问题讨论】:

  • 您说“但在 UpdatePanels 中我似乎无法让它工作”您是什么意思?我知道该页面不会回发,但您要发起哪个事件?
  • 该页面确实回发,但浏览器似乎并未将其识别为“提交”。因此,浏览器会收集我之前提交的数据,并在输入字段时再次建议它,它根本不会收集任何东西。在其他浏览器(例如 Firefox 或 IE9)中,这些数据被很好地收集。但在 Chrome 或 Safari 等 webkit 浏览器中,它不会被识别为实际的数据提交。
  • 您确定更新面板在 webkit 浏览器中正常工作吗?我听说有人对此有疑问:lesson8.blogspot.com/2011/11/…
  • 嗯,嗯,除了自动完成之外,我没有遇到任何问题。
  • @StevenHunt:尝试了你刚才链接的解决方案,不,自动完成/自动填充在 Chrome 中仍然不起作用。

标签: asp.net


【解决方案1】:

您是否尝试过更改 UpdateMode 属性?

【讨论】:

    【解决方案2】:

    我认为您遇到了 ASP.NET UpdatePanel 控件和 jQuery 的经典问题。

    问题如下:

    jQuery 代码(在您的情况下它是自动完成的,但它可以是任何东西)在页面加载时工作正常,但在部分回发后它停止工作。如果是这种情况,您需要了解一些关于将 jQuery 与 UpdatePanel 控件一起使用的知识。

    首先,$(document).ready 中定义的所有事件绑定在第一次部分回发后停止工作(我假设您的按钮单击会导致部分回发)。这正是 ASP.NET 的工作方式。那么如何解决呢?

    嗯,有几种方法可以解决这个问题。一个典型的建议是将$(document).ready 替换为 ASP.NET AJAX 自己的 pageLoad 事件。这可能会解决一个问题,但很可能会导致更多问题,因为现在您将在每个部分回发上绑定事件,从而导致在单个事件上重复执行事件处理程序。您可以通过在执行任何绑定之前为您的选择器调用 unbind 来解决一些问题。对于简单的事件绑定,您可以继续使用 $(document).ready 和实时功能(而不是单击、悬停等)。

    我没有在 UpdatePanel 中使用过 jQuery 插件,所以我不能确定你需要做什么,但是一旦你了解发生了什么,应该不难找到正确的做法。要了解更多关于这个问题和可能的解决方案,请阅读 Dave Ward 的文章$(document).ready() and pageLoad() 不一样! (文章包括几个例子)。

    希望这可能会有所帮助!

    【讨论】:

    • 嗯,不,我认为您误解了这个问题(这完全是我的错,因为我找不到我试图描述的行为的通用定义)。问题是当您使用“提交”类型的按钮在字段中输入内容时浏览器保存的信息。然后,当您在其中输入其他内容时,您的浏览器(而不是网站,就像 jQuery 自动完成的情况一样)会为您提供先前输入的列表。使用更新面板时,出于某种原因,该信息未存储在 webkit 浏览器中。
    【解决方案3】:

    当有完整的发布/提交事件时,Chrome 似乎会记住这些输入值。这是 SO 中关于同一问题的另外两个问题。

    browser autocomplete/saved form not work in ajax requestHow to store to browser auto-complete/auto-fill when using AJAX calls instead of standard form submit

    我尝试使用 get 操作和“NoContent”状态代码伪造提交到另一个页面,以便 chrome 记住这些值。也没有运气。如果它可以工作,但它仍然不是一个好方法。

    【讨论】:

      【解决方案4】:

      我遇到了 OP 发现的相同问题。但是,原因与此处的其他答案不同。

      我的问题是<asp:LinkButton> 触发的回发没有被浏览器作为表单提交。

      例子:

      <asp:LinkButton runat="server" OnClick="codebehind_function">Click here</asp:LinkButton>

      添加 PostBackUrl 属性修复它!

      <asp:LinkButton runat="server" OnClick="codebehind_function" PostBackUrl="#">Click here</asp:LinkButton>

      【讨论】:

        猜你喜欢
        • 2023-04-03
        • 1970-01-01
        • 2019-03-31
        • 2011-02-17
        • 1970-01-01
        • 2012-03-14
        • 2014-01-16
        • 1970-01-01
        • 2012-02-22
        相关资源
        最近更新 更多