Передайте скрытое значение поля, на основе которого нажата кнопка JavaScript.
У меня есть форма с двумя кнопками, каждая из которых имеет onclick = this.form.submit(). У меня есть скрытое поле в форме, и я хотел бы, чтобы значение поля отличалось в зависимости от того, какая кнопка нажата. Какой был бы лучший способ сделать это?
Кроме того, прежде чем кто-нибудь скажет ответы, jQuery в этом случае не является вариантом.
Ответы
Ответ 1
Использовать прототип: -)
Но со всей серьезностью:
- Добавить
id
в скрытое поле
-
Перед отправкой формы в каждый обработчик:
document.getElementById("hiddenId").value = "mySpecialValue";
//or (depending on which onclick handler you are in)
document.getElementById("hiddenId").value = "myOtherSpecialValue";
-
Отправьте форму так же, как и сейчас.
Рекомендуемый пример:
<input id="buttonA" type="button" value="do something" onclick="buttonA_clickHandler(event);"/>
...
function buttonA_clickHandler(event) {
document.getElementById('hiddenId').value = whatever;
document.getElementById('theForm').submit();
}
повторить для другой кнопки.
Ответ 2
Предполагая, что у вас есть скрытая настройка поля примерно так:
<input type="hidden" name="clicked_button" id="clicked_button" value=""/>
Вы можете просто установить его значение в общем обработчике onclick для ваших кнопок:
function buttonClick(theButton){
document.getElementById('clicked_button').value = theButton.name;
return true;
}
И тогда ваши кнопки отправки будут:
<input type="submit" name="save" value="Save" onclick="return buttonClick(this)"/>
<input type="submit" name="delete" value="Delete" onclick="return buttonClick(this)"/>
Ответ 3
-
Простите меня, если ответ на этот вопрос
кажется очевидным, но зачем использовать скрытые
поле вообще? <input type="submit"
value="..." />
уже работает;
браузеры отправят value
кнопку отправки, которая была нажата,
наряду с остальной частью формы
данные.
-
<button type="submit"
name="..." value="...">...</button>
элемент отлично работает в
Chrome/Safari/Firefox, но в
IE7 (как отмечает Lèse majesté в
его комментарий выше); если вы не
заботиться об IE, это было бы
перейти.
-
Вы также можете использовать <input type="image" />
элемент, просто помните, что браузер отправляет
это как два поля: name.x
и name.y
. Также,
вы не можете установить его значение, но это не должно быть
проблема, если вас интересует только
наличие поля.
Ответ 4
Вы можете передать значение, в которое вы хотите установить скрытый ввод для создаваемой функции:
function handleClick(val){
document.getElementById('HiddenInputID').value = val;
return true;
}
а затем закодируйте кнопки с помощью onclick
, чтобы передать любое значение, которое вы хотите:
<input type="submit" name="Name1" value="Value 1" onclick="return handleClick('Value 1')"/>
<input type="submit" name="Name2" value="Value 2" onclick="return handleClick('Value 2')"/>