2016-07-22 5 views
0

У меня есть следующий веб-форма:ВВЕСТИ значение кнопки отправляется только при нажатии

<form action="processor.php" method="post"> 
    <input type="checkbox" name="cb" onclick="submit()"> 
    <input type="submit" name="search" value="Search"> 
</form> 

Так либо нажав кнопку отправки или флажок этой формы передается process.php страницы. Но значение submit, называемое «поиск», отправляется только тогда, когда кнопка нажата явно, а не при щелчке по галочке. Неожиданно для меня. Я ожидал, что отправка формы с помощью команды submit() также отправит все параметры (включая параметр «поиск» кнопки отправки). Так в PHP код, который я не могу использовать:

if(isset($_POST['search']) 

, чтобы проверить, если форма была отправлена, я должен использовать:

if($_SERVER['REQUEST_METHOD']=='POST') 

Это нормальное поведение кнопки submitt?

+1

Если вы также можете использовать if (! Empty ($ _ POST)) {....} –

ответ

2

Да, это правильное поведение. Значение ввода ввода отправляется только при активации или нажатии, так как здесь вы отправляете форму через функцию, это логично.

Проверить этот пример:

<form action="edit.php" method="post"> 
    <input type="text" name="name"> 
    <input type="submit" name="action" value="Save"> 
    <input type="submit" name="action" value="Preview"> 
</form> 

Такое поведение позволяет множественным представить действие в форме.

__

На Флажок Нажмите симулировать нажатие на кнопку отправки вместо использования submit()

+0

Хорошо, я мог бы это сделать. У меня уже есть решение с проверкой глобальной переменной $ _SERVER. Так что «не в этом дело, я просто спрашиваю, что это нормальное поведение. – sbrbot

+0

Добавил еще немного о поведении. – Vuldo

+0

Да, я знаю это, я использую несколько кнопок отправки в одной и той же форме для дифференцирования действий. Фактически, вместо этого я использую

0

Да, это нормально. Я сделал для вас код, чтобы он работал :). Добавьте класс к своему флажку и отправьте кнопку. И добавьте js-код в ваш html или отдельный файл js.

<form action="processor.php" method="post"> 
    <input type="checkbox" class="checkbox" name="cb" onclick="submit()"> 
    <input type="submit" class="sub" name="search" value="Search"> 
</form> 

Он идет в этой функции при нажатии на флажок, он видит, когда его включен, и если это так имитировать нажатие на кнопку отправки.

$(".checkbox").change(function() { 
    if(this.checked) { 
     $(".sub").click(); 
    } 
});