【发布时间】:2012-05-11 14:47:07
【问题描述】:
我有一个搜索表单:
<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 被定义并且被触发。
【问题讨论】:
-
你能不能发一些代码让我们看看你用了什么
-
完成,但代码确实工作,问题在于调用顺序。
标签: javascript forms internet-explorer-8 internet-explorer-7 submit