【问题标题】:IE7 & IE8 does not trigger onsubmit javascript *before* submittionIE7 和 IE8 不会触发 onsubmit javascript *before* submittion
【发布时间】: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


【解决方案1】:

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

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

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

form_name.submit();

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • onclick 会阻止提交事件传播吗?我将如何“在函数末尾提交表单”?
    猜你喜欢
    • 1970-01-01
    • 2019-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-27
    • 1970-01-01
    相关资源
    最近更新 更多