我正在制作一个网络应用程序来管理产品 SKU。其中之一是将 SKU 与产品名称相关联。在表格的每一行上,我列出一个 SKU 并显示 <select>
带有产品名称的盒子。当前与数据库中该 SKU 关联的产品被赋予类似 selected="selected"
的属性。 。这可以通过 AJAX 进行更改和更新。
有很多产品<option>
s - 准确地说是 103 - 并且此列表在 <select>
中重复在每一行。
从页面上的另一个输入,我使用 jQuery AJAX 请求来添加新的 SKU/产品关联,为了清楚地表明它们是立即添加的,我将它们插入到的顶部表格带有一点高光效果。随着 SKU 数量增加到超过 10 个左右,如果我刷新页面(从按产品名称排序的数据库中加载所有内容),Firefox 就会开始显示一些默认选择的错误选项。它显示的错误选项并不一致,但它似乎混淆了页面重新加载之前存在的选项。
如果我检查 <select>
使用Firebug,select="selected"
是正确的<option>
标签。刷新页面(或离开并重新键入此页面的 URL 以返回)不会使其正确显示,但硬刷新 (Ctrl+F5) 可以。
Chrome 和 IE7 首先都能正确显示此内容。
我的理论是,这是 Firefox 缓存策略错误的结果。听起来对吗?我有什么办法可以在我的代码中说“如果刷新此页面,请将其设为硬刷新 - 从头开始重新加载所有内容?”
更新
为了解决这个问题,我改变了策略。
- 之前,我输入了
<select>
有一长串<option>
每个表格行上的 s,当前值设置为默认值 - 现在,我将当前值放入
<span>
中。如果用户单击“更改”按钮,我将替换<span>
与<select>
,“更改”按钮变为“确认”按钮。如果他们更改选项并单击确认,AJAX 会更新数据库,并且<select>
回到<span>
,这次使用新值。
这有两个好处:
- 修复了上述错误
- 它需要页面上远更少的 DOM 元素(所有这些多余的
<option>
)
最佳答案
我遇到了类似的问题,但是在将 autocomplete="off"
HTML 属性添加到每个选择标记后,它就起作用了。 [我使用的是 Firefox 8]
关于firefox - 为什么 Firefox 不显示正确的默认选择选项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1479233/