【问题标题】:autocomplete = "off" ignored in IE?自动完成 =“关闭”在 IE 中被忽略?
【发布时间】:2013-12-23 01:05:27
【问题描述】:

我有一个带有复选框的表单,它们的“选中”值是从数据库后面的代码中填充的。

想象一下,如果我将复选框 1,2 和 3 都设置为在数据库中选中。我加载页面,取消选中复选框 3,然后将更改提交到数据库。现在在我的数据库中,复选框 1 和 2 被选中,而 3 未被选中。我刷新页面,它获取更新的数据库值,并且复选框具有正确的选中值。

这仅在 chrome 和 FF 中对我有用。在 IE 中,即使我取消选中复选框 3,将更改提交到数据库并刷新,它仍然显示为选中状态。我用 ctrl+f5 强制刷新,它仍然没有更新。向复选框和父表单添加 autocomplete="off" 没有任何作用。

【问题讨论】:

  • 这里说的是哪个EI版本?
  • 我在 IE 10 中测试。
  • 您是在 IE 中使用兼容模式设置,还是使用原生 IE 10 设置?
  • 我直接使用 IE 10 设置。
  • 表单数据是用AJAX填写的吗? IE 缓存 AJAX 请求并将使用缓存的版本,这可能是 IE 中数据不会更改的原因。尝试使用 SQL 探查器进行更新,以确保在使用 IE 时数据库确实正在更新,或者启动并运行提琴手以确保回发/数据填充未使用缓存版本

标签: asp.net forms internet-explorer checkbox autocomplete


【解决方案1】:

我认为使用 javascript node.autocomplete = 'off' 会更好。有时它会有所帮助。

别忘了IE有时really ignored autocomplete,例如IE11会忽略autocomplete=off for input type="password" to keeps user in control

【讨论】:

    【解决方案2】:

    此问题已在 cmets 中得到解答,但未在 Answers 中提供相关答案。我试图在这里回答它,以便它对面临相同问题的所有其他用户有用。

    解决办法是:

    请求中没有变化的连续 ajax 调用通常被某些浏览器认为是缓存的,这个问题在IE 10 中特别容易重现。请求的响应是 HTTP 304 Not Modified 并且请求没有命中数据库。解决方案是使用ajaxSetupcache 设置为false 之类的:

    $(document).ready(function() {
      $.ajaxSetup({ cache: false });
    });
    

    注意:这会将会话中所有 ajax 调用的缓存设置为 false。

    如果您不想为所有 ajax 调用禁用缓存,则在特定的 ajax 调用中使用 cache: false

    $.ajax({
             ...
             cache: false,
             ...
          });
    

    【讨论】:

      猜你喜欢
      • 2015-06-08
      • 2021-04-09
      • 2015-05-21
      • 1970-01-01
      • 2010-09-19
      • 2021-10-20
      • 2014-10-16
      • 2012-08-04
      • 1970-01-01
      相关资源
      最近更新 更多