2009-10-02 76 views
3

我有表使用内联编辑ajax来修改字段。该表按姓氏排序。为什么在jquery ajax调用和刷新后dom不同步?

如果我更改姓氏以便更改行顺序,然后执行页面刷新,则表格会重新排序,但我更改的字段在dom中仍然具有以前的值。输入字段在html中具有正确的值,但会显示dom值。

硬刷新当然会显示所有正确的值。

为什么我的DOM不同步?我怎样才能刷新显示正确的值?后反应


编辑

这是火狐保留对输入字段的前值。在网络上浏览过后,我发现加入<form autocomplete="off">会强制Firefox对而不是缓存旧值。

+0

男人,这是一个非常令人困惑的错误,试图找出什么改变。你不认为它可能与firefox保留表单值或什么有关? – Steerpike 2009-10-02 12:50:34

回答

2

几乎肯定与您的浏览器通过刷新保留表单值有关。是否可以对其进行排列,以便在刷新时,用于从输入字段更新DOM的触发器会再次触发?

很难给出更多的细节,而不知道你的DOM和你的输入字段是如何在代码中相互作用的。

2

我认为浏览器正在缓存窗体字段的先前值(这很糟糕)。真正令人沮丧的是,如果我改变多个项目,几乎不可能确定值属性是正确的还是字段中的文本是正确的(因为它可以以任何方式)。

我真的很惊讶你使用ajax,但没有自动排序/自动刷新按钮。

对于短期来说,您应该使用可排序的表格以避免用户在页面上时感到困惑。

从长远来看,你应该与我工作的一个非常类似的问题的解决方案去...

所储存的数据(它阿贾克斯到服务器,服务器将其存储在DB)该表总是有从数据库设置服务器端的值字段,并在页面加载时,有一个js脚本循环所有输入元素,并手动设置值属性的字段值,如:

$("table :input").each(
    $(this).value($(this.attr("value"))); 
);