嗨,我對Web編程非常陌生。過去幾天我一直在學習PHP,但我陷入了一件事。表單中的多個提交按鈕
我在我的代碼中有一個窗體標籤,它有兩個提交按鈕來操作數據。 由於我的表單標籤只能有一個動作定義,因此它只能導向一個頁面。 (不太確定)
現在取決於單擊窗體上的按鈕,我想加載一個不同的頁面。 一種方法是檢查在if-else結構中單擊的按鈕,然後在分支中使用echo'...'並顯示爲不同的頁面。但由於某種原因,這看起來不正確。有人能給我一個更好的解決方案嗎?謝謝。
嗨,我對Web編程非常陌生。過去幾天我一直在學習PHP,但我陷入了一件事。表單中的多個提交按鈕
我在我的代碼中有一個窗體標籤,它有兩個提交按鈕來操作數據。 由於我的表單標籤只能有一個動作定義,因此它只能導向一個頁面。 (不太確定)
現在取決於單擊窗體上的按鈕,我想加載一個不同的頁面。 一種方法是檢查在if-else結構中單擊的按鈕,然後在分支中使用echo'...'並顯示爲不同的頁面。但由於某種原因,這看起來不正確。有人能給我一個更好的解決方案嗎?謝謝。
一種方法是使用Javascript切換窗體的動作,具體取決於哪個控件被點擊。下面的示例使用jQuery庫:
<form id="theForm" action="foo.php">
...
<input id="first" type="submit"/>
<input id="second" type="submit"/>
</form>
$(document).ready(function() {
$("#theForm input").click(function(e) {
e.preventDefault();
if(e.target.id == 'first') {
$("#theForm").attr("action", "somePage.php");
} else {
$("#theForm").attr("action", "anotherPage.php");
}
alert($("#theForm").attr("action"));
$("#theForm").submit();
});
});
基礎上添加@ karim79的另一種解決方案,因爲它標記爲PHP:
<form id="theForm" action="foo.php">
...
<input id="first" name="button" value="first" type="submit"/>
<input id="second" name="button" value="second" type="submit"/>
</form>
在你的foo.php
,做這樣的事情:
<?php
$submit = isset($_GET['button']) ? trim($_GET['button']) : '';
if($submit == 'first')
{
header('Location: somePage.php');
}
else if($submit == 'second')
{
header('Location: anotherPage.php');
}
?>
摘要: 能夠閱讀您的按鈕(2個提交按鈕),您需要在每個按鈕上添加name
。爲了簡單起見,只需在兩者上使用相同的名稱即可。然後,添加不同的value
。接下來,您需要通過檢查在特定按鈕上發送的值來知道正在單擊哪個按鈕。
這將丟棄所有的表單數據,當它重定向時,但它與問題描述的方法相同。 – Quentin 2010-08-22 08:45:30
只是作爲參考... INT HTML5按鈕可以重新定義表單的操作,方法,類型等http://w3schools.com/html5/tag_button.asp對我來說,這是控制形式:)
在2030年,當沒有實現該功能的瀏覽器可能不足以擔心時,此答案可能會有用。 – Quentin 2010-08-22 08:47:19
我知道..這就是爲什麼我說「作爲參考」...我認爲這是一個很好的功能,雖然 – pleasedontbelong 2010-08-22 08:51:40
的問題是,有其他的方法好方法提交表單而不是點擊一個提交按鈕 - 例如,當你按下輸入文本「輸入」時如何?我認爲你應該在最後有一個單選按鈕/選擇/複選框,而不是兩個提交按鈕。 – 2010-08-22 08:10:48