2016-02-12 80 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/