2012-06-27 8 views
1

У меня есть HTML формаКак узнать, какая кнопка нажата?

я использую <a href="#" onclick="document.aa.submit()"> вместо кнопки отправить

мой код будет объяснить мою проблему лучше ..

<html> 
<form name="aa" action="aa.php" method="post"> 
<input type="checkbox" name="posts[]" value="1"> 
<input type="checkbox" name="posts[]" value="2"> 
<a href="#" onclick="document.aa.submit()">Delete</a> 
<a href="#" onclick="document.aa.submit()">Move</a> 
</form> 
</html> 

aa.php

<?php 
print_r($_POST); 
?> 

результаты

Array ([posts] => Array ([0] => 1 [1] => 2)) 

Теперь возникает вопрос:

Как узнать, что пользователь нажал кнопку «Удалить» или «Переместить»?

Примечание:

я знаю, если я использовал <input submit> это исправляет проблему

, но я не могу использовать кнопку отправки по какой-то причине

Примечание 2

вопрос заключается в том для обнаружения его по php.

Пример:

Array ([posts] => Array ([0] => 1 [1] => 2 ['submit'=>'delete'])) 

if('delete'){ 
mysql_query("delete from...") 
} 
else{ 
mysql_query("update/move ...."); 
} 
+0

Используйте тег ID для элементов? Проводка идентификатора и извлечение его с помощью php-формы. – Brendan

+0

Используйте тег ID, чтобы различать элементы! – alibenmessaoud

+0

Возможный дубликат [Многократная кнопка отправки в форме] (http://stackoverflow.com/questions/3540585/multiple-submit-button-in-a-form) – miku

ответ

0

Вам нужно сделать некоторые корректировки в форму, так что значение Post знает, какой вариант вы подаете

<form name="aa" action="aa.php" id='aa' method="post"> 
<input type="checkbox" name="posts[]" value="1"> 
<input type="checkbox" name="posts[]" value="2"> 
    <a href="#" onclick="submit_function(this)" rel="delete">Delete</a> 
     <a href="#" onclick="submit_function(this)" rel="move">Move</a> 
     <input id="submit_type" type="hidden" name="task"> 
     </form> 

в JS с JQuery

function submit_function(item){ 
    if(item.rel == 'move') 
    { 
    document.getElementById('submit_type').value ='move' 
    } 
    else if(item.rel == 'delete') 
    { 
    document.getElementById('submit_type').value ='delete' 
    } 

    document.getElementById('aa').submit() 

    } 

в PHP

if($_POST['task'] == 'move') 
{ 
//do move stuff 
} 

    if($_POST['task'] == 'delete') 
{ 
//do delete stuff 
} 
1

Только PHP ... Нет JavaScript? Если вы используете javascript, я бы предложил идею использования кнопки, которая вызывает некоторый javascript для отправки формы вместо ссылки, это может дать вам лучшие результаты, так как вы также можете сделать некоторые звонки, чтобы установить некоторые скрытые поля формы до этого . Кроме того, почему подано нарушение?

Посмотрите на следующую страницу, чтобы узнать, как использовать скрытые поля.

http://www.tizag.com/htmlT/htmlhidden.php

по почте, вы должны быть в состоянии получить скрытое поле, как если бы пользователь представил его, а затем сделать свой расчет в PHP вместо HTML.

+0

Это фантастическая идея, идея такова: при нажатии на кнопку удаления, создать скрытый ввод (с именем delete) Пример: и, конечно, теперь я смогу узнать, на какую кнопку нажал php –

+0

Пожалуйста, обратите внимание, если ответ помог вы. Я новичок в StackOverflow и нуждаюсь в репутации. –

0

С помощью jQuery вы можете даже избавиться от события onclick в своих тегах и просто добавить следующий jQuery.

$(document).ready(function() { 
    $("a").click(function(event) { 
     alert($(this).html()) // Replace this line with the one below for your code 
     // document.aa.submit($(this).html()) 
    }); 
});​ 

$(this).html() возвратит innerhtml храповой a тега. например, «Удалить» или «Переместить».Вы можете использовать это в PHP, чтобы определить щелкнул Линк

+0

Прошу прощения, я не использую jquery –

+0

стыд. идеально подходит для вашей проблемы –

+0

hhh, у меня есть комплект одежды моего размера, но я не ношу его из-за их цветов –

1

Здесь вы идете:

<html> 
<form name="aa" action="aa.php" method="post"> 
<input type="hidden" name="action" value=""> 
<input type="checkbox" name="posts[]" value="1"> 
<input type="checkbox" name="posts[]" value="2"> 
<a href="#" onclick="document.aa.action='delete';document.aa.submit()">Delete</a> 
<a href="#" onclick="document.aa.action='move';document.aa.submit()">Move</a> 
</form> 
</html> 
+0

Это будет отлично работать, если я не обработаю данные в одном файле, а не в нескольких файлах действий, пожалуйста, см. Мое решение, если вы заинтересовались этим вопросом. –

+0

Очевидно, что идея @ codefactor называть скрытое поле так же, как и атрибут формы, не хороша :) Я подумал, что он хочет изменить значение скрытого элемента, а не атрибут '

' – Timur

0

РЕШЕНИЕ:

<script> 
function createInput(action){ 
var input = document.createElement("input"); 
input.setAttribute("type", "hidden"); 
input.setAttribute("name", "action"); 
input.setAttribute("value", action); 
document.getElementById("forsm").appendChild(input); 
document.aa.submit(); 
} 
</script> 

<html> 
<form name="aa" id="forsm" action="aa.php" method="post"> 
<input type="checkbox" name="posts[]" value="1"> 
<input type="checkbox" name="posts[]" value="2"> 
<a href="#" id="delete" onclick="createInput('delete');">Delete</a> 
<a href="#" id="move" onclick="createInput('move');">Move</a> 
</form> 
</html> 

результаты

Array ([сообщений] => Array ([0] => 2) [действие] => перемещение)

Большое спасибо за Расти Вебер, Это дало мне идею

+0

Я думаю, что решение codefactor намного лучше, потому что поле всегда будет доступно. Это было бы полезно в некоторых случаях. Разумеется, вы можете включить его решение в действие. Кроме того, 'createInput', я думаю, не является хорошим именем для функции, которая также отправляет форму ... – Timur

+0

Решение codefactor полезно, если я обрабатываю данные в нескольких файлах, но я использую один файл для обработки данных, я не могу использовать несколько файлов действий, а также я использую около 12 кнопку отправки, это значит, что мне нужно будет создать 12 файлов! –

+0

'CreateInput' действительно похоже на очень общее имя, возможно, пересмотреть reamaming' SubmitWithHiddenValue'. Я бы также согласился с решением Codefactor, касающимся только одного файла php для всего вашего решения, подверженного ошибкам и не очень надежного. Это действительно зависит от типа принимаемого действия и того, насколько сложным вам нужно сделать программу. –

Смежные вопросы