我正在写一个脚本,我向用户提供两个按钮“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>
答案 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
,然后触发您想要实际提交表单的按钮。