2013-07-19 23 views
0

我有一個腳本,它會生成一個包含衆多行和顏色的表格。在行的每一端,是一個提交按鈕,其名稱是在運行腳本時生成的數組之一,如下所示:delete_CN [0],delete_CN [1]等。確定使用哪個提交按鈕時,使用按鈕陣列

在處理表單POST時,我需要確定點擊了哪個提交按鈕。目前,當我看到一個print_r或dump_vars時,我看到以下內容:["delete_CN"]=> array(1) { [0]=> string(6) "Delete" },它沒有給出被按下的按鈕的數組索引。

我應該如何最好地去做這件事?我需要找到按下的提交按鈕的數組索引,或者另一種方式來唯一標識提交按鈕的行,以處理數據。原始格式是通過讀取區域文件動態生成的,同一行上的元素都是數組。

回答

1

發佈數據將始終包含所有按鈕,但只有被點擊的按鈕纔會有值。通過這種方式,您可以通過檢查按鈕數組中的哪個值不爲空來輕鬆確定單擊哪個按鈕。 (該值將作爲文本在value屬性中定義的按鈕上的文本)。

0

在HTML/PHP你能在表中每一行一個單獨的形式,並添加

<input type="hidden" name="which_clicked" value="delete_CN[0]"> 

然後尋找$ _ POST [「which_clicked」]

或者你可以使用jQuery和根據點擊提交按鈕插入哪個值。

+0

相當用戶friendy按鈕標籤:d –

+0

超級用戶友好,該按鈕的標籤會爲用戶提供茶和餅乾 – JohnnyFaldo

0

請注意,也可以使用ENTER鍵提交表單。如果發生這種情況,瀏覽器會像點擊表單中的第一個按鈕那樣處理它。

顯然,當焦點位於提交按鈕上時按下ENTER鍵使用此當前焦點按鈕發送表單。

+0

這是不正確的,它取決於焦點,您也可以捕捉輸入鍵並停止事件。 –

+0

當焦點在按鈕上時ENTER使用它提交表單,這就是對的。我相應地調整了我以前的評論。當javascript在遊戲中時,一切都會發生,那也是對的。我上面的註釋針對一個簡單的案例,並描述了瀏覽器的默認行爲。 – staabm

0

我做了什麼,我創建了一個隱藏的輸入類型數組,具有「唯一值」以及我們分配給每個按鈕的那些值。例如input type =「hidden」name =「txtID []」id =「txtID []」value =「15618」,對於按鈕輸入type =「submit」name =「CityAdd15618」id =「CityAdd15618」value =「 +」

然後提交的時候,你只需要循環

$lTtl=count($_POST['txtID']); 
for($lCtr1=0; $lCtr1<$lTtl; $lCtr1++) 
{ 
    if (isset($_POST['CityAdd' . $_POST['txtID'][$lCtr1]])) 
     break; 
} 
echo "ttl:" . $lCtr1 . "<br>\n";