2012-08-10 33 views
1

我是新來的表單和Javascript,所以請原諒。使用javascript提交不同值的表格

我有一個看起來像這樣的形式:

<form method="post" action="control" name="myform"> 
<input type="submit" name="Name" value="Do A"/> 
<input type="submit" name="Name" value="Do B" /> 
<input type="submit" name="Name" value="Do C" /> 
<input type="submit" name="Name" value="Close" /> 
</form> 

我需要這樣有兩個按鈕和形式使用JavaScript依賴於某些外部條件提交給改變這一點,所以我希望它看起來像這樣:

<form method="post" action="control" name="myform"> 
<script> 
function submitForm(form){ 
    if(someConditionA){ 
     submit the form so that the script performs same action as if the button Do A had been clicked 
    } if (someConditionB){ 
     submit the form so that the script performs same action as if the button Do B had been clicked 
    } if (someConditionC){ 
     submit the form so that the script performs same action as if the button Do C had been clicked 
    } 
} 

function closeForm(form){ 
    window.close(); 
} 
</script> 
<button name="doAction" onClick="SubmitForm(this.form)">Do Action<\button> 
<button name="close" onClick="SubmitForm(this.form)">Close<\button> 
</form> 

我該如何實現函數submitForm?

感謝

+0

對於初學者來說,在你的事件處理函數中有'SubmitForm',但函數名爲'submitForm'。 'this.form'不存在。您的提交按鈕應該有不同的名稱來區分它們。 – 2012-08-10 14:42:25

+0

對不起,錯字。這些按鈕必須具有相同的名稱,以便cgi腳本可以處理它 – Tom 2012-08-10 14:46:45

+0

我不明白「提交表單以便執行與上面的操作相同的操作」的意思。 – 2012-08-10 14:46:52

回答

1

具有相同的名稱添加隱藏字段作爲原始提交按鈕:

<input type="HIDDEN" name="Name" value=""/> 

設置基於條件字段的值:

function submitForm(form){ 
    if(someConditionA){ 
     form.Name.value = "Do A"; 
    } if (someConditionB){ 
     form.Name.value = "Do B"; 
    } if (someConditionC){ 
     form.Name.value = "Do C"; 
    } 
    form.submit(); 
} 

更改新的關閉按鈕,這:

<button name="close" onClick="this.form.Name.value='Close';this.form.submit();">Close<\button> 

我沒有測試過這個,所以它可能包含一個或兩個錯誤,但這是一般的想法。 (對'this.form'+1,很多人都知道,很好。)

+0

和我上面的答案一樣,但更詳細些。謝謝! – Tom 2012-08-10 15:05:30

-1

不知道如果我得到你的問題的權利,但你爲什麼不只是做一個click事件上的提交按鈕? 像

$('#mysendbtn').click(function(){ ...do A }); 
+1

jQuery沒有在此處請求。這可以很容易地在本地JavaScript中完成。 a.k.a. ** [MOAR JQUERY !!](http://stackoverflow.com/a/2826810/871050)** – 2012-08-10 15:01:27

+1

Javascript是一個jQuery框架嗎? – 2012-08-10 15:03:32

+0

挑剔的人;)但確定。 – yogee 2012-08-10 15:04:58

0

剛纔已經想出回答我的問題:

做到這一點是有一個隱藏字段的方式:

<input type="hidden" name="Name" value=""/> 

然後在功能,設置這個隱藏字段與相應的按鈕具有相同的值。

0

那麼,你應該簡單地命名你的提交按鈕不同。

<form method="post" action="control" name="myform"> 
    <input type="submit" name="SubmitA" value="Do A"/> 
    <input type="submit" name="SubmitB" value="Do B" /> 
</form> 

這樣,提交時,服務器將能夠區分哪個提交被點擊。

+0

爲什麼這會降低投票率?請反饋? – 2012-08-10 15:04:08

+0

在我的問題中,我說只需要兩個按鈕 – Tom 2012-08-10 15:04:21

+0

@Tom:所以只能使用2個按鈕... – 2012-08-10 15:05:07