我有一个搜索表格:
<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 被定义并被触发。