Забудьте о генерации событий, таких как нажатия клавиш. Хотя вы можете (в разных непереносимых способах) создавать события и маршрутизировать их в систему обработки событий, это вызовет вызовы только для функций обработчика событий; он будет не заставляет браузер выполнять действия по умолчанию для пользовательского действия, например нажатия клавиши или щелчка мыши.
В любом случае, поведение, о котором вы говорите, с сбросом на Escape - это quirk IE: ни в одном другом браузере Escape не имеет никакого эффекта, и даже в IE это ненадежно. В частности, в обычной форме одно нажатие Escape теряет изменения с момента последнего фокуса, а два нажатия Escape в строке сбрасывают всю форму до начальных значений. Однако, если в форме есть <input type="reset">
, одно нажатие Escape сбрасывает форму и фокусирует кнопку сброса. Это делает его еще проще, чтобы случайно потерять все, что вы набрали, и еще одна веская причина не включать кнопку сброса в ваши формы.
Итак, если вы хотите сбросить начальные значения, вы можете позвонить form.reset()
. Если вы хотите сбросить только одно поле, вы можете установить input.value= input.defaultValue
(или input.checked= input.defaultChecked
для флажков/радиостанций и аналогично defaultSelected
по опциям).
Если, однако, вы хотите значение, которое присутствовало в то время поле было последним сосредоточенным, как и IE ведет себя, когда нет кнопки сброса, вам придется сделать некоторые переменной вспоминание, например .:
var undonevalue= $('#undoable').val();
$('#undoable').focus(function() {
undonevalue= $('#undoable').val();
});
$('#undoer').click(function() {
$('#undoable').val(undonevalue);
});
Для будущих зрителей - есть по умолчанию Javascript свойство называется 'defaultValue'. Вы можете использовать 'input.value = input.defaultValue' для отдельных элементов. Во внешней переменной нет данных экономии времени, если она уже существует. – Shadow