簡體   English   中英

Php-單擊哪個按鈕

[英]Php - Which button is clicked

我正在編寫一個腳本,其中向用戶提供了兩個按鈕“授予”和“撤銷”。 問題在於,這兩個選項均已設置,並且“授予”按鈕始終優先。

下面是示例代碼

<form name="form_access" id="form_access" action="" method="POST" class="access">
|
|
| 

<input type="hidden" name="accessaction" value="Grant Access"/>
<input type="hidden" name="revokeaction" value="Revoke Access"/>

<a id="_access_btt" class="button" href="#">Grant Access</a>

    <img class="ajaxload" style="display:none;" id="ajaxld" src="images/ajax-loader.gif"/>
    <a id="_revoke_btt" class="button" href="#">Revoke Access</a>

    <img class="ajaxload" style="display:none;" id="ajaxld1" src="images/ajax-loader.gif"/>
</form>

為何不使用單個隱藏元素,而不是使用兩個隱藏元素?

例如:您可以使用:

<input type="hidden" name="accessPermission" value=""/>

並根據用戶單擊的按鈕,在javascript的幫助下,您還可以設置此操作的值:

document.form_access.accessPermission.value = "Revoke Access"

document.form_access.accessPermission.value = "Grant Access"

然后提交表格!

因此最后,您只需在PHP中檢查$ _REQUEST ['accessPermission']值,

並且您將獲得為隱藏表單元素accessPermission設置的任何值:

如果其值為“撤銷訪問”,則將獲得$ _REQUEST ['accessPermission']作為“撤銷訪問”

如果其值為Grant Access,則將獲得$ _REQUEST ['accessPermission']作為“ Grant Access”

因此,最后,您可以將表單構造為:

<form name="form_access" id="form_access" action="" method="POST" class="access">
|
|
| 

<input type="hidden" name="accessPermission" value=""/>

<a id="_access_btt" class="button" href="javascript:document.form_access.accessPermission.value = 'Grant Access'">Grant Access</a>

    <img class="ajaxload" style="display:none;" id="ajaxld" src="images/ajax-loader.gif"/>
    <a id="_revoke_btt" class="button" href="javascript:document.form_access.accessPermission.value = 'Revoke Access'">Revoke Access</a>

    <img class="ajaxload" style="display:none;" id="ajaxld1" src="images/ajax-loader.gif"/>
</form>

並且設置了這兩個值是因為,它們實際上是由行專門設置​​的:

<input type="hidden" name="accessaction" value="Grant Access"/>
<input type="hidden" name="revokeaction" value="Revoke Access"/>

Grant Action優先,因為它是最先出現的。

<input type="submit" name="accessaction" value="Grant Access"/>
<input type="submit" name="revokeaction" value="Revoke Access"/>

要檢查是否按下了Grant Access,可以檢查isset($_POST['accessaction'])
要檢查是否按下了“撤消訪問”,可以檢查isset($_POST['revokeaction'])

所有瀏覽器只會設置被按下的按鈕,IE是愚蠢的,並將值設置為坐標或其他值,其他瀏覽器將其設置為true,Firefox通常將值設置為按鈕上的t4ext。 但是最好的方法是只檢查存在的$_POST數組。

編輯

使用JS來解決這個問題可能還可以,但是當用戶打開或關閉JS時,此解決方案就可以使用,因此我認為它更優雅

編輯

如果您不想將它們用作實際按鈕,則可以將它們設置為display: none按鈕,然后觸發您要實際提交表單的按鈕。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM