2009-06-18 465 views
1

因此,我繼承了這個傳統的rails代碼庫,並且存在一個錯誤,我需要修復給定表單在頁面刷新後保留值(尚未保存到數據庫)的位置。更新後保留值的形式

用例: 用戶填寫表單中的數據,但不按提交。 用戶單擊瀏覽器上的刷新按鈕。 保留表單中的值,而不是刷新整個頁面。

任何想法,我可以開始尋找?在我短暫的,有限的Rails經驗中,這不是默認情況下發生的事情,所以它必須在某個地方編碼?

回答

0

應告訴用戶按Ctrl + F5

- 編輯 如果你不能告訴用戶press CTRL+F5(它總是在我的經驗,除非作品的瀏覽器是馬車,或除非有其他出錯了),只是在form.reset()onload事件。這將清除窗體中的字段爲默認值。如果您在字段中具有默認值(如<輸入類型=「文本」值=「在此輸入名稱」/ >),那麼當您旅行.reset()時,它將重置爲默認值。

3

有時瀏覽器會這樣做。 (我不是在談論自動填充下拉菜單,哪些瀏覽器也是這樣做的......只是談論部分填寫,從未提交過,然後刷新的表單)。

確保字段中的值實際上來自您的Rails應用程序,方法是檢查HTML源窗口。

瀏覽器提供的由於以前輸入的值不會在VALUE屬性中,但服務器提供的值將會是。

避免,這可能是一些選項:

  • 發送用戶使用POST形式。因此,任何刷新都會導致「您要重新提交」等。我不認爲認爲瀏覽器會在這種情況下預填任何字段(與用戶發佈然後點擊後退按鈕時相同)。
  • 使用onload()事件消除表單字段值。

有可能是一個更簡單的解決方案... Ctrl-F5有時會做這個伎倆,但我想我以前見過這種方法不行。

1

我剛剛遇到了這個問題,甚至<body onload="myform.reset()">沒有工作。這是一個特別的問題,因爲無論好壞,我都使用隱藏的輸入作爲計數器(例如跟蹤動態數量的文件上傳字段)。這些顯然需要在重新加載時重置以防止出現不適用的警告消息。爲了實現我的內部目的,我通過放棄重置按鈕來支持鏈接,從而「修復」它。而不是<input type="reset"/>我使用<a href=".">Reset</a>(文件名是index.php)。遠非優雅,但它適用於我的目的。