3

我有一个搜索表格:

<form class="searchForm" id="topSearchForm" action="/search.ds">

它附加了一个 onsubmit 事件,触发了一个 javascript。此 javascript 的目的是在根据某些标准提交表单之前清空某些表单字段。

需要明确的是,需要发生的是:

用户输入 -> 用户点击搜索按钮(或按“回车”) -> Javascript 运行 -> 字段被清除 -> 表单已提交

这在除IE7 和 IE8之外的所有浏览器中完全按照预期工作。javascript 运行,但由于某种原因,表单提交是在 javascript 清除字段之前完成的。这会导致提交的页面包含来自应该被清除的字段的数据。

我只能控制 UI 的(某些部分),并且在提交表单后无法处理任何事情。出于可用性目的,在用户提交表单之前填写这些字段(应该清除)很重要。

为什么 IE7 和 IE8 的内部逻辑不同(它在 IE9 和“所有其他浏览器”中运行良好)?我有办法绕过这个问题吗?

这里有一些更多的代码来澄清:

我将事件附加到表单中:

var formElement = document.getElementById("topSearchForm");
[...]
formElement.attachEvent('onsubmit', function() {clearForSubmit()});

并且 clearForSubmit 被定义并被触发

4

2 回答 2

1

你可以在js中尝试这样的事情

<form onsubmit="clearForSubmit(); return false;">

这不会提交表格,您可以在清除后提交表格

form_name.submit();
于 2012-05-12T01:27:40.033 回答
0

使用onclick事件而不是onsubmit,然后在代码中的函数末尾提交表单。

于 2012-05-11T14:50:20.330 回答