2012-03-29 134 views
2

我希望能夠從一個按鈕儘可能多的屬性顯示,因爲我可以。PHP的HTML顯示按鈕的屬性

按鈕:

<input name="Accept" type="submit" class="button" id="Accept" value="Accept" /> 

按鈕代碼:

if(isset($_POST['Accept'])){ 
//show button properties here 
} 

我想它顯示在按鈕按下什麼:

  • 名稱:接受
  • 類型:提交
  • 類:按鈕
  • ID:接受
  • 值:接受

和什麼別的永遠可以顯示

謝謝你在先進。

+0

我知道你可能無法顯示所有內容,但我希望能夠儘可能多地顯示 – 2012-03-29 23:43:34

+1

這是什麼情況?發佈時,只會發送輸入元素的名稱和值。 – F21 2012-03-29 23:46:33

+1

傳回的唯一數據是名稱和值對。除非你願意使用JavaScript。 – 2012-03-29 23:47:40

回答

1

如何通過普通的HTML行爲獲取HTML元素的屬性沒有辦法 - 但是您可以使用處理「onSubmit」表單事件的JavaScript函數,通過它可以發送所有您需要的東西。

+0

好的謝謝。這樣的事情如何... name =「save [11798779]」 我怎樣才能得到這個數字? – 2012-03-29 23:54:21

+0

當然,$ _POST將包含鍵'save',該鍵是包含原始HTML元素值的鍵'11798779'的數組。 – 2012-03-29 23:57:20

+0

如何獲得該號碼? – 2012-03-29 23:59:11

2

一種可能的方式,不使用JavaScript將數據副本存儲在元素的名稱:

<input name="Accept" type="submit" class="button" id="Accept" value="Accept" /> 

變爲:

<input name="Accept.submit.button.Accept" type="submit" class="button" id="Accept" value="Accept" /> 

您可以得到value$_POST數組。對於其餘的屬性,只需使用explode()來分割元素的鍵。

+1

好主意。謝謝。 – 2012-03-29 23:58:10

1

除了名稱和值之外,沒有辦法提交輸入的屬性,但是您可以使用任何想要的信息在表單上隱藏輸入,甚至可以創建它們或動態地將它們填充到按鈕的onclick中或表單的提交事件。

作爲另一種選擇,我會填充JSON形式的按鈕值中的信息,因爲按鈕的值通常無用。

如果你真的想出了想法,那麼你可以在表單的action屬性中將url信息填入url的查詢字符串中,然後通過檢查GET數組來獲取信息(但是如果表單方法是取而代之的是,然後這些值可能會被覆蓋!)

但是,如果你只是需要一種方法來區分許多按鈕,那麼每個人都有不同的名稱或值,這可能是按鈕具有名稱和值的唯一原因。


關於andrejd的回答,請注意,雖然你可以使用的onsubmit功能與阿賈克斯提交,然後返回false取消默認提交,請注意,使用這種方法存在以下問題:

1 )onSubmit函數不知道哪個按鈕被按下了,但是你可以使用按鈕的onClick事件,但是你必須綁定到表單上的每個提交按鈕(你可以用jquery等來更容易地做到這一點)。

2)由於Ajax不會影響頁面內容,因此ypu會自行刷新它或自行導航頁面,後者可以使用「location.href」

3)如果你正在提交文件,你將很難用ajax做這件事,你可以嘗試使用jquery fileupload插件。

4)Ajax被限制在同一個源(tgat表單提交不是),你可以嘗試使用JSONP解決方法。

5)如果客戶端沒有JavaScript(比如一些手機或者某些文本瀏覽器,比如linux瀏覽器),或者禁用了JavaScript或者使用了較老的瀏覽器,Ajax將不起作用,並且通常不會建議完全依賴Ajax,但至少應該爲這些情況提供一種替代方案。


對於問題2-4,你可以通過讓Ajax只是額外的內容來解決它們,然後返回true以讓默認提交提交表單。

+1

另一個好主意,謝謝。 – 2012-03-29 23:59:50

+0

這是在無狀態HTTP中執行這些事情的標準方式,這是首先存在隱藏輸入的原因。 – 2012-03-30 00:04:00

+0

事實上,ASP.Net在幕後幾乎完全基於這個想法,使用視圖狀態輸入 – 2012-03-30 00:10:08