2009-10-02 50 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"))); 
);