Php - 单击了哪个按钮

时间:2011-08-07 13:36:40

标签: php javascript forms button

我正在写一个脚本,我向用户提供两个按钮“Grant”和“Revoke”。问题是它们都已设置,“Grant”按钮始终优先。

以下是示例代码

<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>

2 个答案:

答案 0 :(得分:3)

为什么不使用单个隐藏元素,而不是使用两个隐藏元素?

例如:你可以使用:

<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优先,因为它首先出现。

答案 1 :(得分:0)

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

要检查是否已按下授权访问权限,您可以查看isset($_POST['accessaction']) 要检查是否按下了撤消访问权限,您可以检查isset($_POST['revokeaction'])

所有浏览器只会设置按下的按钮,IE是愚蠢的,并将值设置为坐标或其他东西,其他浏览器将其设置为true,Firefox通常会将值设置为按钮上的t4ext。但最好的方法是只检查$_POST数组中哪一个存在。

修改

使用JS解决这个问题可能没问题,但是这个解决方案可以在用户打开或关闭JS时使用,因此我觉得它更优雅

修改

如果您不想将它们用作实际按钮,可以将它们设置为display: none,然后触发您想要实际提交表单的按钮。