2008-09-26 25 views
0

我使用document.form.submit()函數來處理一個相當大的輸入表單(數百個字段,它是一個庫存應用程序)。我在用戶空閒了一段時間後調用了這個函數,我想保存他們輸入的任何數據。當我嘗試這個頁面重新加載(操作是#),但任何在字段中輸入的新文本都不會傳遞到REQUEST中,所以我不會將它放入數據庫中。是否有一些根本的原因,爲什麼會發生這種情況,或者是我的代碼只是不能很好地發揮作用(我使用EXTJS網格視圖來顯示錶單和用於跟蹤空閒時間的庫)? 謝謝, 羅伯特如何在將某人登出之前用數據提交表單?

+0

好吧我改變了表單動作到另一個頁面,發現當form.submit函數被調用時,頁面仍然刷新而不是轉到其他頁面。有人知道爲什麼會發生這種情況? – Robert 2008-09-26 14:52:24

+0

然後我把我的form.submit從setTimeout函數中取出(以消除顯示popover div後的延遲),它工作正常!現在我必須弄清楚如何區分我是否應該註銷用戶... – Robert 2008-09-26 14:59:12

回答

1

我想我把答案放在這裏。我發現是這樣做的: setTimeout('frm.submit();',2000); 導致頁面重新加載但未提交表單。當我這樣做: frm.submit(); 表單已提交且數據已通過。我不知道爲什麼第一種方式沒有工作,但我並不需要知道:)

+0

感謝您的回答,但在發佈我的結果之前我沒有看到他們。 – Robert 2008-09-26 15:17:39

0

服務器可能會排除輸入值。說如果你的服務器上的頁面是這樣的:

<form action="/page.cgi"> 
    ... 
    <input name="Fieldx" value=""/> 
</form> 

我認爲這將使該領域失效。或者,服務器操作可能會間接設置它。在JSF中,就像這樣。

<input name="Fieldx" value="#{bean.nullProperty}"/> 

你在服務器上有什麼和你的瀏覽器是什麼?

0

我會嘗試捕獲HTML發佈請求,看看是否包含輸入字段。如果他們那麼你的服務器有問題。

但是關於你所說的,我認爲這是因爲你的瀏覽器處理JavaScript DOM的方式存在衝突。這可能是這種情況,如果你在表單上遺漏了提交按鈕並且它可以工作。

0

HTMLFormElement對象的submit方法應該只提交表單,因爲如果用戶點擊了提交按鈕。因此,如果表單的action屬性設置爲#,則它似乎會刷新頁面,因爲它將表單數據發送到同一頁面。

奇怪的是,當您將action屬性設置爲另一個頁面時仍然會執行此操作。

表格的method屬性是否設置爲getpost

相關問題