Php - какая кнопка нажата - PullRequest
       1

Php - какая кнопка нажата

1 голос
/ 07 августа 2011

Я пишу скрипт, в котором я предоставляю пользователю две кнопки «Предоставить» и «Отменить».Проблема в том, что они оба установлены, и кнопка «Предоставить» всегда имеет приоритет.

Ниже приведен пример кода

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

3 голосов
/ 07 августа 2011

Вместо того, чтобы использовать два скрытых элемента, почему бы вам не использовать один скрытый элемент, что-то вроде этого?

например: вы можете использовать:

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

и в зависимости от того, какая кнопкапользователь нажимает, с помощью javascript вы также можете установить значение этого действия:

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

и

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

, а затем отправить форму!

, поэтому вВ конце вы можете просто проверить значение $ _REQUEST ['accessPermission'] в своем PHP,

, и вы получите любое значение, которое вы установили для скрытого элемента формы accessPermission:

, если его значениеОтменив Access, вы получите $ _REQUEST ['accessPermission'] в качестве 'Revoke Access'

, если его значение равно 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"/>

ПредоставитьДействие имеет приоритет, потому что оно появляется первым.

0 голосов
/ 07 августа 2011
<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, для которого он существует.

EDIT

Использование JS для решения этой проблемы может быть приемлемым, но это решение работает, когда пользователи включают или выключают JS, и поэтому я думаю, что это более элегантно

EDIT

Если вы не хотите использовать их в качестве фактических кнопок, вы можете установить их на display: none, а затем нажать на тот, который вы хотите фактически отправить форму.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...