0

提交表单时可以同时执行两个操作吗?

这是我的例子:

<input type="checkbox" name="setM"  id="m"  value="1" onClick="this.form.submit();setM();" />

还有另一种方法可以提交表单并同时处理功能吗?当我提交表单时,我做了一些处理,然后我处理了 setM。所以我需要提交将是第一个。

编辑

<script type="text/javascript">
function DoAllThese() {
    One();
    Two();
    Three();
    Four();}

我可以调用这个函数,然后一个会做 setM 函数,两个会提交具体的表格?

4

4 回答 4

2

除非您使用 AJAX,否则您运行的任何提交后行为都不会对页面产生任何影响,因为该页面将被表单发布的结果替换。如果您在提交表单后确实使用了 AJAX,即使在最好的情况下,您也会在提交后操作的效果和预期加载新页面而卸载的页面之间存在一些竞争条件。

由于您的问题实际上无法确定您要做什么,因此我将仅提供一些一般性指导。

  1. 在提交表单之前运行任何可能影响表单提交的操作,然后仅在这些操作完成后提交表单。如果表单提交以成功完成功能为条件,请确保在默认操作(表单提交)失败时阻止它们。

  2. 如果您想根据表单提交的结果影响当前页面,请使用 AJAX 并完全通过 JavaScript 处理表单提交,其函数依赖于在 AJAX 成功回调中运行的表单发布(或者如果您使用 200 OK 响应) '正在手动处理 AJAX)。

  3. 不要在标记中应用你的行为,而是通过使用 JavaScript 将处理程序附加到元素。这将有助于使您的 JavaScript 代码易于理解,因为这些行为将在您的代码中本地化,而不是分散在整个文档中。

于 2013-01-17T20:52:58.447 回答
2

正如其他两个人以非常漂亮的方式解释的那样,我还说使用 ajax 提交表单可以实现您想要做的事情。

<form>


<button onclick="ajaxsubmit()">Submit</button>
</form>

你的阿贾克斯:

function ajaxsubmit(){
   // do your other functions
$.ajax({
    // ajax send
 }).done(function(){
    // submitted successfully
 });
}
于 2013-01-17T21:02:49.547 回答
1

HTML

<form name="myform" action="test.html" onsubmit="verify()">
    <!-- FIELDS -->
</form>

Javascript

function verify()
{
    One();
    Two();
    Three();
}
于 2013-01-17T18:22:36.450 回答
1

当您提交表单时,浏览器会离开页面,因此您描述的“过程”可能是服务器端的。

您不能通过浏览器刚刚离开的页面上的事件处理程序使 JavaScript 在下一页上运行。

您需要:

  • 使用 XMLHttpRequest (Ajax) 提交数据
  • 让下一页包含您要运行的 JS
于 2013-01-17T17:33:27.957 回答