同时提交表单和调用函数

时间:2013-01-17 17:29:39

标签: javascript html

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

以下是我的例子:

<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 个答案:

答案 0 :(得分:2)

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

由于您的问题无法确定您要执行的操作,因此我将提供一些一般性指导原则。

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

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

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

答案 1 :(得分:2)

正如其他两个家伙以非常漂亮的方式解释的那样,我也说使用ajax来提交表格,你想做什么。

<form>


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

你的ajax:

function ajaxsubmit(){
   // do your other functions
$.ajax({
    // ajax send
 }).done(function(){
    // submitted successfully
 });
}

答案 2 :(得分:1)

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

您不能让浏览器刚离开的页面上的事件处理程序在 next 页面上运行JavaScript。

你需要:

  • 使用XMLHttpRequest(Ajax)提交数据
  • 让下一页包含您要运行的JS

答案 3 :(得分:1)

HTML

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

<强>的Javascript

function verify()
{
    One();
    Two();
    Three();
}