2012-06-27 133 views
1

我有html表單如何知道點擊了哪個按鈕?

我使用,而不是<a href="#" onclick="document.aa.submit()">提交按鈕

我的代碼會解釋我的問題越好..

<html> 
<form name="aa" action="aa.php" method="post"> 
<input type="checkbox" name="posts[]" value="1"> 
<input type="checkbox" name="posts[]" value="2"> 
<a href="#" onclick="document.aa.submit()">Delete</a> 
<a href="#" onclick="document.aa.submit()">Move</a> 
</form> 
</html> 

aa.php

<?php 
print_r($_POST); 
?> 

結果

Array ([posts] => Array ([0] => 1 [1] => 2)) 

現在的問題是:

如何知道用戶點擊刪除或移動?

注:

我知道如果我用<input submit>將修復該問題

,但我不能使用某種原因

注2

的問題是如何提交按鈕通過php來檢測它。

?例如:

Array ([posts] => Array ([0] => 1 [1] => 2 ['submit'=>'delete'])) 

if('delete'){ 
mysql_query("delete from...") 
} 
else{ 
mysql_query("update/move ...."); 
} 
+0

在a元素上使用ID標籤?發佈id並用php表單檢索它。 – Brendan

+0

使用ID標籤來區分元素! – alibenmessaoud

+0

可能重複[多個提交按鈕在窗體中](http://stackoverflow.com/questions/3540585/multiple-submit-button-in-a-form) – miku

回答

0

你需要作出一些調整的表格,以便郵政值知道哪個選項,您所提交

<form name="aa" action="aa.php" id='aa' method="post"> 
<input type="checkbox" name="posts[]" value="1"> 
<input type="checkbox" name="posts[]" value="2"> 
    <a href="#" onclick="submit_function(this)" rel="delete">Delete</a> 
     <a href="#" onclick="submit_function(this)" rel="move">Move</a> 
     <input id="submit_type" type="hidden" name="task"> 
     </form> 
在JS

使用jQuery

function submit_function(item){ 
    if(item.rel == 'move') 
    { 
    document.getElementById('submit_type').value ='move' 
    } 
    else if(item.rel == 'delete') 
    { 
    document.getElementById('submit_type').value ='delete' 
    } 

    document.getElementById('aa').submit() 

    } 

在PHP

if($_POST['task'] == 'move') 
{ 
//do move stuff 
} 

    if($_POST['task'] == 'delete') 
{ 
//do delete stuff 
} 
1

只有PHP ...沒有使用Javascript?如果您使用的是JavaScript,我會建議使用一個按鈕來調用一些JavaScript來提交表單而不是鏈接,但它可能會給您更好的結果,因爲您還可以調用一些調用來設置表單中的某些隱藏字段已提交。另外,爲什麼提交被破壞?

看看下面的頁面,懂得如何使用隱藏域。

http://www.tizag.com/htmlT/htmlhidden.php

在後,你應該能夠得到隱藏字段,如果用戶已經在PHP,而不是HTML提交它,然後做你的計算。

+0

這是一個絕妙的想法,想法是:點擊刪除按鈕,創建一個隱藏的輸入(命名爲刪除)示例:現在我可以知道哪個按鈕已被點擊php –

+0

如果答案有幫助,請豎起大拇指您。我是StackOverflow的新手,需要聲望。 –

0

使用jQuery您甚至可以在你的標籤去掉onclick事件,只是添加下面的jQuery。

$(document).ready(function() { 
    $("a").click(function(event) { 
     alert($(this).html()) // Replace this line with the one below for your code 
     // document.aa.submit($(this).html()) 
    }); 
});​ 

$(this).html()將返回點擊a標記的innerHTML。例如「刪除」或「移動」。然後你可以使用這個在你的PHP來識別點擊臨客

+0

對不起,我不使用jquery –

+0

慚愧。將完全適合您的問題 –

+0

hhh,我有一個衣服套件我的大小,但我不穿它,因爲他們的顏色 –

1

在這裏你去:

<html> 
<form name="aa" action="aa.php" method="post"> 
<input type="hidden" name="action" value=""> 
<input type="checkbox" name="posts[]" value="1"> 
<input type="checkbox" name="posts[]" value="2"> 
<a href="#" onclick="document.aa.action='delete';document.aa.submit()">Delete</a> 
<a href="#" onclick="document.aa.action='move';document.aa.submit()">Move</a> 
</form> 
</html> 
+0

這將工作完美,除非我處理數據在一個文件中,不是多個動作文件,請參閱我的解決方案,如果你碰到這個問題 –

+0

很明顯,@ codefactor的想法隱藏領域的名字相同,形式的屬性不好:)我認爲他是關於改變隱藏元素的價值,而不是'

' – Timur

0

SOLUTION:

<script> 
function createInput(action){ 
var input = document.createElement("input"); 
input.setAttribute("type", "hidden"); 
input.setAttribute("name", "action"); 
input.setAttribute("value", action); 
document.getElementById("forsm").appendChild(input); 
document.aa.submit(); 
} 
</script> 

<html> 
<form name="aa" id="forsm" action="aa.php" method="post"> 
<input type="checkbox" name="posts[]" value="1"> 
<input type="checkbox" name="posts[]" value="2"> 
<a href="#" id="delete" onclick="createInput('delete');">Delete</a> 
<a href="#" id="move" onclick="createInput('move');">Move</a> 
</form> 
</html> 

結果

陣列([帖] =>數組([0] => 2)[動作] =>移動)

非常感謝生鏽的韋伯,給我這個想法

+0

我認爲codefactor的解決方案好得多,因爲該字段總是可用。這在某些情況下會很有用。當然,你可以將他的解決方案包裝到功能中。另外,'createInput',我認爲對於提交表單的函數也不是一個好名字... – Timur

+0

如果我在多個文件中處理數據,但是我使用一個文件來處理數據,我不能使用代碼因子的解決方案多個動作文件,以及我使用約12提交按鈕,這意味着我將需要創建12個文件! –

+0

'CreateInput'似乎是一個非常通用的名稱,可能會重新考慮重命名'SubmitWithHiddenValue'。我通常也會同意Codefactor的解決方案,因爲處理整個解決方案只有一個PHP文件容易出錯並且不完全健壯。這實際上取決於所採取的行動類型以及製作該計劃所需的複雜程度。 –

相關問題