if(characterCode == 13)
{
return false; // returning false will prevent the event from bubbling up.
}
else
{
return true;
}
Хорошо, представьте, что у вас есть следующее текстовое поле в форме:
<input id="scriptBox" type="text" onkeypress="return runScript(event)" />
Чтобы запустить какой-либо «определенный пользователем» скрипт из этого текстового поля при нажатии клавиши ввода, и чтобы он не отправлял форму, вот некоторый пример код. Обратите внимание, что эта функция не выполняет проверку ошибок и, скорее всего, будет работать только в IE. Чтобы сделать это правильно, вам нужно более надежное решение, но вы получите общее представление.
function runScript(e) {
//See notes about 'which' and 'key'
if (e.keyCode == 13) {
var tb = document.getElementById("scriptBox");
eval(tb.value);
return false;
}
}
возвращение значения функции предупредит обработчик события, чтобы он не генерировал событие дальше, и предотвратит дальнейшую обработку события нажатия клавиши.
Примечание:
Было отмечено, что keyCode
является , теперь устарело . Следующая лучшая альтернатива which
имеет также устарела .
К сожалению, популярный стандарт key
, который широко поддерживается современными браузерами, имеет некоторые хитроумные поведения в IE и Edge . Все, что старше IE11, все равно нуждается в polyfill .
Более того, хотя устаревшее предупреждение довольно зловеще в отношении keyCode
и which
, его удаление может привести к серьезным изменениям в неисчислимом количестве устаревших веб-сайтов. По этой причине маловероятно, что они скоро куда-нибудь отправятся.