У меня есть форма на странице HTML с несколькими кнопками отправки, которые выполняют разные действия. Однако, когда пользователь вводит значение в текстовый ввод и попадает, браузеры обычно действуют так, как если бы последовательная кнопка отправки последовательно была активирована. Я хочу, чтобы какое-то конкретное действие произошло, поэтому одно решение, которое я нашел, - это добавить невидимые кнопки отправки в HTML непосредственно после текстовых входов, например:
<input type="text" name="something" value="blah"/>
<input type=submit name="desired" value="Save Earth" style="display: none"/>
...
<input type=submit name="something_else" value="Destroy Earth" />
...
<input id="foobar" type=submit name="desired" value="Save Earth" />
Это работает как шарм в большинстве браузеров, за исключением того, что он не работает в браузерах webkit, таких как Safari и Chrome. По какой-то причине они пропускают невидимую кнопку отправки. Я пытался выяснить, как перехватить нажатие клавиши ввода и активировать правильное представление с помощью Javascript, но я не смог заставить его работать. Перехват keydown и настройка фокуса на правильную передачу не работают.
Есть ли способ использовать Javascript или иначе, чтобы выбрать, какая кнопка будет использоваться, когда пользователь нажимает клавишу ввода в текстовом вводе в форме HTML?
Изменить: Чтобы уточнить, форма не может требовать от Javascript "работать" в принципе. Меня не волнует, если представление ключа ввода нежелательно без Javascript в браузерах webkit, но я не могу удалить или изменить порядок кнопок отправки.
Это то, что я пробовал, это не изменяет поведение отправки в браузерах webkit.
Что было сделано, чтобы изменить focus() в следующем коде, чтобы щелкнуть().
document.onkeypress = processKey;
function processKey(e)
{
if (null == e)
e = window.event ;
if (e.keyCode == 13) {
document.getElementById("foobar").click(); // previously: focus()
}
}
РЕДАКТИРОВАТЬ: ЗАКЛЮЧИТЕЛЬНОЕ РЕШЕНИЕ:
Работает с каждым браузером и только перехватывает клавишу ввода при необходимости:
HTML:
<input type="text" name="something" value="blah"
onkeydown="return processKey(event)" />
<input type=submit name="desired" value="Save Earth" style="display: none"/>
...
<input type=submit name="something_else" value="Destroy Earth" />
...
<input id="foobar" type=submit name="desired" value="Save Earth" />
JavaScript:
function processKey(e)
{
if (null == e)
e = window.event ;
if (e.keyCode == 13) {
document.getElementById("foobar").click();
return false;
}
}