2012-04-02 43 views
0

我有一个表单,它有几个不同的提交按钮,它们都使用相同的发布数据做不同的事情。只有当特定的提交按钮被按下时,才会将窗体提交到新窗口?

比方说,为了简单起见,形式如下:

<form method="post"> 
    <input type="hidden" name="ids" value="1,2,3,4" /> 
    <input type="submit" id="picking" name="picking" value="Picking" /> 
    <input type="submit" id="shipping" name="shipping" value="Shipping" /> 
    <input type="submit" id="invoice" name="invoice" value="Invoice" /> 
</form> 

在形式提交给自己的那一刻,我工作了服务器端其提交按钮被按下,从P​​OST数据创建一个URL,然后做一个PHP重定向到我需要去的地方。这工作正常。

但是,我正在查找表单以将其数据发布到新窗口,但仅在单击“发票”时。这排除了将target="_blank"添加到表单中,因为其他2个按钮也会提交到新页面。

我也不能将表单拆分成3种不同的形式,因为数据比上面的要复杂得多,而且很多都是由用户输入的。

有没有办法使用JavaScript/JQuery来做到这一点?如果是这样,我会从哪里开始?

谢谢

+0

如果你建立这个与心灵的javascript的要求,你的形式将是无用的禁用javascript的人。 – Straseus 2012-04-02 13:35:51

+0

虽然如果你确实需要使用javascript,onclick事件 - 在提交之前执行'form.setAttribute(“target”,“_blank”);'。 – Straseus 2012-04-02 13:36:37

+0

@Straseus依赖Javascript不是问题。这是为了我确切知道谁会使用它,所以知道他们有JS。 – Nick 2012-04-02 13:54:37

回答

4

会不加靶坯的形式:

$(document).on("click","#invoice",function(){ 
     $('#form_id').attr('target', '_blank'); 
    }); 
+0

谢谢,没想到! – Nick 2012-04-02 14:06:59

0

尝试将点击处理程序添加到正确的提交按钮。

$('#invoice').on('click', function(){ 
    //doStuff 
}); 

这将允许您控制#invoice的操作而不影响其他操作。点击发票时?:

$("#invoice").click(function(){ 
    $('#form_id').attr('target', '_blank'); 
}); 

+0

这是你的答案应该解决的** doStuff **部分。 – 2012-04-02 13:36:25

+0

为Elen的回答+1了。 :) – Joe 2012-04-02 13:38:07