【问题标题】:onSubmit not triggered on form loaded with AJAX在使用 AJAX 加载的表单上未触发 onSubmit
【发布时间】:2009-09-24 20:50:57
【问题描述】:

我使用 AJAX 将包含表单的外部 HTML 文件加载到另一个 HTML 文件中。表单 HTML 看起来像这样:

<form id="..." name="..." onsubmit="postUsingAJAX(x,y,x); return false;">

加载工作正常。但是,提交表单时不会执行 onSubmit 代码,与提交按钮上的 onClick 处理程序相同;似乎没有触发任何事件侦听器。这是通过 AJAX 加载 HTML 时的工作方式还是我做错了什么?

一个可能的解决方法是做

theFormObject.addEventListener('submit', function...)

但我不知道如何在触发回调后使表单不提交。我怎样才能让它等待返回值(或者更确切地说,不管回调函数中发生什么,都将它“返回 false”)?

有什么想法吗?

【问题讨论】:

    标签: javascript ajax forms javascript-events


    【解决方案1】:

    它看起来像是函数 postUsingAJAX 中的错误。代码“return false”将不会执行。要在出错后继续正常工作,您应该使用 try..catch 语句。示例:

    函数 postUsingAJAX() { 尝试 { // 危险代码 } 抓住 (e) { // 报告错误 } }

    【讨论】:

    • 您可能会考虑进一步记录这一点,以便通过 Google 来的新手。
    【解决方案2】:

    如果您使用 AJAX,我的猜测是您不希望表单将用户带到新页面 - 您希望它调用处理页面并相应地更新当前页面。您应该做的是创建没有任何 &lt;form&gt; 标记的整个表单。然后,使用&lt;button&gt; 标记(例如:&lt;button id="whatever"&gt;Whatever&lt;/button&gt;)将单击事件侦听器附加到该按钮以执行 AJAX 操作。这就是我总是使用用户填写的表单进行 AJAX 调用的方式。

    【讨论】:

    • 看起来他正在为他的 onsubmit 处理程序在 javascript 中使用“return false”来处理这个问题 - 因此应该阻止表单通过正常流程发布,除非出现 javascript 错误。
    • 是的,但我实际上已经尝试过使用 return false 进行 onsubmit 并且 neveerrrr 对我有用 - 它总是会通过。最好直接避免。
    猜你喜欢
    • 2012-04-09
    • 1970-01-01
    • 1970-01-01
    • 2019-11-08
    • 2023-03-11
    • 1970-01-01
    • 2012-08-01
    • 2020-04-19
    • 1970-01-01
    相关资源
    最近更新 更多