【发布时间】:2011-01-19 11:21:40
【问题描述】:
我正在为 Web 应用程序实现表单脏污检测。我感兴趣的“肮脏”是服务器的价值与表单上显示的内容。服务器正在运行 Django,我们的大部分脚本都在 jQuery 中。
我们为表单字段提供与服务器上的值相对应的正确默认值,例如
<input name="foo" type="text" value="this is the saved value" id="id_foo" />
标准答案是遍历表单输入并保存它们的初始值以供以后在加载时进行比较。
这在大多数情况下都有效,但 Firefox 有时会忽略提供的值,而是将其替换为用户的最后输入,从而打破了这一点。因此,例如:我们提供表单,用户修改它(“现在它很脏”),然后刷新; Firefox 将值替换为用户的最后输入。
这会破坏检测脏污的脚本,因为它的初始值不是服务器提供的值,而是用户在刷新前输入的值。此时脚本无法访问原始值。
其他开发人员如何解决这个问题?现在我提供了一个带有 real 原始值的隐藏跨度,但感觉非常hacky:
<input name="foo" type="text" value="this is the saved value" id="id_foo" />
<span class="original-value" id="id_foo_orig">this is the saved value</span>
有什么方法可以禁用 Firefox 中输入的这种行为吗? (IE 和 Chrome 至少不这样做) 我在这里遗漏了一些基本的东西吗?
谢谢,
罗伯特
【问题讨论】:
标签: jquery django firefox forms refresh