2012-04-02 74 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