2012-08-23 115 views
2

我有一個窗體有兩個按鈕,我也有一個參數,根據按下哪個按鈕需要2個不同的值。 如果我寫這樣的事情一個窗體有兩個按鈕

<form> 
    <input type="hidden" name="method" value="saveXml"/> 
    <input type="submit" name="save" value="SAVE"/> 

    <input type="hidden" name="method" value="cancelled"/> 
    <input type="submit" name="back" value="BACK"/> 
</form> 

參數「方法」始終被傳遞到服務器值「saveXml」。

由於任務的其他條件,我不能把這些按鈕分成兩種形式。我怎麼解決這個問題?

+1

這裏你需要一點JS。 – itsme

回答

0
  1. 將按鈕更改爲超鏈接。
  2. 使超鏈接調用不同的JavaScript函數。
  3. 特定的JS函數將用您指定的值提交表單。

除此之外 - 您可以只放置一個'隱藏'輸入,並根據點擊哪個按鈕隨時更改它的值。這你也必須在javascript中檢測。在這種情況下,提交也用JS完成,而不是通過按鈕單擊。

+0

謝謝你的回答!看來我真的需要js在這裏。 – ursaminor

+0

對不起,煩人,但不,你不需要js甚至隱藏的領域。在我的回答下面查看我的評論。用僞碼說話(只描述邏輯/算法),你可以這樣做:'IF($ submit ='save')DO save_your_xml_class ELSEIF($ submit ='back')dont_save_and_perform_back_class'。這樣您可以根據收到的值確定要執行的類。而且你只需要2個不同名稱的提交按鈕,就是這樣。 –

0

在您的表單發佈值中,如果用戶單擊了save按鈕,它將有一個字段save和值SAVE

如果用戶點擊back按鈕,它將具有值BACK

你不需要隱藏字段來做到這一點。

點擊提交按鈕後,瀏覽器只會發佈用戶點擊的輸入值到服務器。 (如果點擊save,則不會發布back,反之亦然)

+0

感謝您的回答,但我想傳遞的參數的值和按鈕的名稱是不同的,我需要傳遞'SAVE'但'saveXml'(當按下SAVE時)並且與其他按鈕相同。 – ursaminor

+0

如果您可以控制接收端,則可以將其更改爲查找。如果沒有,那麼一些狡猾的JavaScript解決方案是必需的。 – Matthew

-1

@Matthew給出了正確的建議。 下面是示例PHP代碼(認爲它是僞代碼,只是爲了理解邏輯):

[編輯,以反映邏輯,與JavaScript history.back(-1)不PHP示例]

if($_POST['save']) : 
    // your saveXml case 
    ... 
else if ($_POST['back']) : 
    // your back case 
    ... 

這樣只有按下「保存」按鈕才能處理保存(XML將被保存),只有按下「返回」按鈕才能處理返回。沒有JavaScript,沒有隱藏的字段。

+0

謝謝,但我不使用PHP。我使用Struts,並根據傳遞參數「method」的值決定Action類執行什麼方法 – ursaminor

+0

如果你指定了這個問題,這將是很好的)。無論如何,如果您提交表單,它將發送所有值,POST將包含所有4個變量(輸入),其中2個具有相同的名稱和不同的值 - 問題在這裏。我不熟悉Struts和PHP示例只是爲了說明邏輯 - 如果我們說普通的PSEUDOCODE格式,我會建議這樣的邏輯:IF($ submit ='save')DO save_your_xml ELSEIF($ submit ='back')dont_save_and_perform_back 。通過這些方法,您不需要JavaScript和隱藏字段,您可以根據您收到的變量(按下按鈕)選擇要執行的類。 –

+0

@Ihor - 發表一個答案 - 你有我的投票。 – mnmnc

相關問題