2016-02-12 84 views
1

我有一個帶有文本字段的窗體的Iframe。此窗體由php腳本創建。父頁面不斷自動刷新。窗體重置不會在頁面auot刷新後發生

<form id="form" method="post" action="test.php?vid='.$vid.'"> 
<table border="1" width="100%" style="border-collapse:collapse"> 
<tr> 
<th class="col-header list">Distance </th> 
<th class="col-header list">Service</th> 
<th class="col-header list">Recipient</th> 
</tr> 
<tr> 
<td > 
<input type="text" class="input" id="cdistance" name="cdistance" /> 
</td> 
<td nowrap class="list"> 
<input type="text" class="input" id="service" name="service" /> 
</td> 
<td nowrap class="list"> 
<input type="text" class="input" id="destination" name="destination" /> 
</td> 
</tr> 
<tr> 
<td width="100%" colspan="3" style="background:#e0e0e0;"> 
<input type="submit" class="btn" name="add" id="add" value="Add New"/> 
<input type="hidden" name="distance_unit" value="'.$distance.'" /> 
</td> 
</tr> 
</table> 
</form> 

爲了避免用戶輸入的數據丟失(「襲來之前提交」)我以前在父頁面查詢代碼來獲得在iframe的形式的輸入的文本,並刷新頁面後添加回文本字段。

我的問題是,當用戶點擊提交按鈕後,頁面刷新文本字段不清除(表單不重置),但數據提交成功。所以我試圖重置表格$('#form')[0].reset()。這是我

Uncaught TypeError: Cannot read property 'reset' of undefined

也試過$('#textVal').val('');空文本字段錯誤。但仍然保留在文本字段中的數據。

注意:如果用戶在刷新前點擊提交按鈕,表單將被重置。有沒有人需要更多的細節,請讓我知道。

任何解決方案,這將不勝感激。

+0

你確定你的表單有一個'id =「form」'? '.reset()'應該可以工作,但是你必須確保你使用了正確的選擇器。 – Growiel

+0

在這裏發表你的表格。 –

+0

@Growiel是表單ID是否正確。 –

回答

0

嘗試

$('#form').trigger("reset"); 
+0

即使你用'$('#form')'選擇id,你仍然必須使用$('#form')[0]'來獲得真正的HTMLFormObject而不是jQuery對象。 – Growiel

+0

謝謝。弄糊塗了。 –

+0

我試過$('#form')[0] .trigger(「reset」);並沒有工作。 –

0

所有的文檔,你可以找到關於.reset()是一種誤導。只有在沒有設置value屬性時,纔會重置表單值。

我在這個jsfiddle中做了個測試:https://jsfiddle.net/bj2z2x14/

當你點擊提交,我首先顯示隱藏的「DISTANCE_UNIT」字段的值,然後我用$('#form')[0].reset();清除表單,並重新顯示值,這仍然是設置,因爲value屬性。

如果要清除您指定的值的字段,你必須像這樣的東西做手工:

$('#form').find('input:not([type="submit"])').val(''); 

這將在表單中的每個輸入設除提交按鈕(這樣你不會失去按鈕文字)。 你可以看到它在這個jsfiddle中的行動:https://jsfiddle.net/bj2z2x14/1/