5

关于点击并提交示例如下:

<form action="url" method="post">
<input type="text" id="input1"/>
<input type="submit" value="submit" onclick="testFun()"/>
</form>

当我们单击按钮提交时,是否有可能在表单提交后运行函数 testFun

如果答案是否定的。为什么?单击提交按钮时浏览器如何工作?订单是点击功能->提交?是正确的??

4

5 回答 5

6

不,您无法在提交表单后执行功能 - 执行的顺序如下:

  • 用户点击提交按钮
  • onclick函数被执行
  • 浏览器将页面提交到url表单的action中指定

false您可以通过从 onclick 处理程序返回来阻止浏览器提交页面:

function myfunc() {
  // do some stuff
  return false;
}

然后应该像这样修改提交按钮:

<input type="submit" onclick="return myfunc()"/>

如果您确实希望在提交表单后执行某个功能,您需要使用 AJAX 提交表单 - 这不会导致浏览器离开页面,并且可以在提交表单后执行 JavaScript 函数

于 2012-06-19T09:19:12.123 回答
1

这是不可能的,因为表单action会将浏览器重定向到该 URL。

1 选项是testFun()在您的action url页面上运行,但这可能是不可能的,具体取决于功能的作用。

如果您要在此处发布有关您实际尝试做什么的更多信息,那么它可能会有所帮助。

于 2012-06-19T09:03:08.320 回答
1

不,但testFun可能(反过来)调用另一个异步函数,该函数在表单提交之前不会运行(此时它根本不会运行,因为浏览器会离开页面)。

于 2012-06-19T09:14:22.153 回答
0

不,这是不可能的,提交后您超出了当前页面的范围。但是,如果您使用 iframe 提交表单并在父页面上调用该函数,那么我认为它会起作用。

于 2012-06-19T09:04:31.147 回答
0

答案是“不可能”

为什么

因为一旦浏览器触发提交事件,所有用户与页面的交互都会停止。触发提交事件后,您的浏览器和网络服务器之间会进行通信。这就是浏览器的设计方式。

在您的情况下,发生表单提交是因为您的页面中有一个表单,并且在该表单中您有一个 type=button 的输入。如果您不想提交页面,您可以将输入的类型更改为按钮。

检查这个小提琴http://jsfiddle.net/kiranvj/MBxNs/1/

于 2012-06-19T09:08:36.470 回答