题
我正在将document.form.submit()函数用于相当大的输入表单(数百个字段,它是一个库存应用程序)。我在用户闲置了一段时间之后打电话给我,我想保存他们输入的任何数据。当我尝试这个页面重新加载(动作是#)但是在字段中键入的任何新文本都没有在REQUEST中传递,所以我不能把它放在数据库中。是否有一些根本原因导致这种情况发生,或者我的代码不能很好地协同工作(我使用EXTJS网格视图来显示表单和用于跟踪空闲时间的库)? 谢谢, 罗伯特
解决方案
我想我把答案放在这里。我发现这样做: setTimeout('frm.submit();',2000); 导致页面重新加载但未提交表单。当我这样做时: frm.submit(); 表格已提交,数据已通过。我不知道为什么第一种方法不起作用,但我不需要知道:)
其他提示
服务器可能会排除输入值。假设您服务器上的页面如下所示:
<form action="/page.cgi">
...
<input name="Fieldx" value=""/>
</form>
我认为这将使该领域无效。或者这个服务器操作可能是间接设置它。在JSF中,就像这样。
<input name="Fieldx" value="#{bean.nullProperty}"/>
您在服务器上有什么以及您的浏览器是什么?
我会尝试捕获HTML post请求以查看是否包含输入字段。如果他们是你的服务器有问题。
但是就你所说的而言,我认为这是因为浏览器处理JavaScript DOM的方式存在冲突。如果您在表单上省略提交按钮并且有效,则可能出现这种情况。
HTMLFormElement
对象的 submit
方法应该只提交表单,就像用户点击了提交按钮一样。因此,如果表单的 action
属性设置为#
,它似乎只是刷新页面,因为它将表单数据发送到同一页面页。
奇怪的是,当你将action属性设置为另一个页面时它仍然会这样做。
表单的 method
属性是否设置为获取
或 post
?