2011-07-15 143 views
-2

问题出在这里:我有一个带有三个按钮和一些隐藏输入字段的简单表单。根据按下的按钮(不同的名称=“”值),这个动作做了一些不同的事情。
我现在想通过这样一个确认对话框添加到该表单:html表单提交 - javascript不提交输入按钮

<form method="POST" action="/action" onsubmit="return confirmFormSubmit(this);"> 
    <input type="submit" name="one" value="This"> 
    <input type="submit" name="two" value="That"> 
    <input type="submit" name="three" value="Something else"> 
</form> 

<script type="text/javascript"> 
function confirmFormSubmit(obj) 
{ 
    window.event.preventDefault(); 
    jConfirm('Are you sure you want to do this?', 'Awaiting confirmation', function(r) { 
     if (r == true) { 
      obj.form.submit(); 
     } else { 
      return false; 
     } 
    }); 
} 
</script> 

当我点击确定,动作发生,但输入按钮没有提交。
做'document.location = obj.form.action;'不是一个选项,因为它不会提交POST参数。

我该如何让该死的东西提交输入字段而不只是调用该操作?

+0

那么你的“/动作”的动作(对不起,这样的:P)实际上做? –

+0

更改实体的状态或删除它。无论如何,它有什么关系?这已经是服务器端。 – jurchiks

+0

@Samuele - 当然,它为什么会运行这个动作。 – aroth

回答

0

我认为这是因为onsumit方法重写表单声明中的操作。 我实际上会更改表单的按钮,并使其成为链接到JavaScript方法的按钮,该方法执行所需的测试并将值提交给正确的操作。

+0

有没有测试,我只需要它提交POST变量,除了提交按钮,所有这些都是相同的... – jurchiks

-1
<form method="POST" action="/action"> 
    <a href="javascript: confirmFormSubmit(this)"> 
     <input type="button" name="three" value="Something else"> 
    </a> 
</form> 

这样的事情应该是工作

+0

-1为什么,实际上?老兄,试试吧,你不用表单submit/onsubmit,但是你调用一个处理提交给你的javascript方法。它实际上工作。所以,在别的之前,尝试一下。 –

+0

对不起,我写了2年后,但我不是那个低估了你的答案的人,尽管我明白为什么有人会这么做。 – jurchiks