Как я могу сказать, какая кнопка была нажата в форме PHP, отправляют?

У меня есть несколько кнопок на моей странице, но я не уверен, как сказать, какой был нажат. Вот разметка для моих двух кнопок:

<input type="submit" id="btnSubmit" value="Save Changes" />
<input type="submit" id="btnDelete" value="Delete" />
73
задан wonea 16 January 2013 в 12:08
поделиться

3 ответа

В форме HTML, например:

<input type="submit" name="btnSubmit" value="Save Changes" />
<input type="submit" name="btnDelete" value="Delete" />

Используемый PHP-код будет выглядеть так:

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    // Something posted

    if (isset($_POST['btnDelete'])) {
        // btnDelete
    } else {
        // Assume btnSubmit
    }
}

Вы всегда должны предполагать или использовать по умолчанию первую кнопку отправки, которая будет отображаться в исходном HTML-коде формы . На практике различные браузеры надежно отправляют имя / значение кнопки отправки с данными публикации, когда:

  1. Пользователь буквально нажимает кнопку отправки с помощью мыши или указывающего устройства
  2. Или есть фокус на кнопке отправки ( они вкладываются в него), а затем нажимается клавиша Enter .

Существуют и другие способы отправки формы, и некоторые браузеры / версии решают не отправлять имя / значение каких-либо кнопок отправки в некоторых из этих ситуаций. Например, многие пользователи отправляют формы, нажимая клавишу Enter , когда курсор / фокус находится на текстовом поле. Формы также могут быть отправлены через JavaScript, а также с помощью некоторых других малоизвестных методов.

Важно обратить внимание на эту деталь, иначе вы действительно можете расстроить своих пользователей, когда они отправят форму, но «ничего не происходит» и их данные теряются, потому что ваш код не смог обнаружить отправку формы, потому что вы этого не сделали. предвидеть тот факт, что имя / значение кнопки отправки не может быть отправлено с данными публикации.

Кроме того, приведенный выше совет следует использовать и для форм с одной кнопкой отправки, потому что вы должны всегда предполагать, что кнопка отправки по умолчанию .

Я знаю, что в Интернете полно руководств по обработке форм, и почти все они не делают ничего, кроме проверки имени и значения кнопки отправки.Но, они просто неправы!

135
ответ дан 24 November 2019 в 12:18
поделиться

В HTML:

<input type="submit" id="btnSubmit" name="btnSubmit" value="Save Changes" />
<input type="submit" id="btnDelete" name="btnDelete" value="Delete" />

В PHP:

if (isset($_POST["btnSubmit"])){
  // "Save Changes" clicked
} else if (isset($_POST["btnDelete"])){
  // "Delete" clicked
}
10
ответ дан 24 November 2019 в 12:18
поделиться

Вы спрашиваете на php или javascript.

Если он находится в php, дайте ему имя и используйте метод post или get, после этого вы можете использовать опцию isset или это конкретное имя кнопки проверяется на это значение.

Если это в js, используйте getElementById для этого

-2
ответ дан 24 November 2019 в 12:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: