[英]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.