Почему входное значение не может быть изменено при нажатии escape
-
12-09-2019 - |
Вопрос
У меня есть ввод (внешняя форма), который фиксирует имя изображения.Пользователь должен ввести новое имя и нажать Enter.Обратный вызов Ajax переименовывает изображение.Это работает.
Я хотел бы добавить возможность «сбрасывать» входной контент, когда пользователь нажимает escape (# 27).Но я не могу заполнить значение ввода своим значением.
Код
<input id="escapeInput" value="this is test" /> <input type="button" id="setDetaultToEscapeInput" value="Set default" />
jQuery(document).ready(function() {
jQuery("#escapeInput").keydown(function(evt) {
if (evt.keyCode == 27) {
var input = jQuery(this);
input.val('some default value') // doesn't work
input[0].value = 'some default value 2'; // doesn't work
input.parent().append('changed');
}
});
jQuery("#setDetaultToEscapeInput").click(function() {
var input = jQuery("#escapeInput");
input.val('some default value') // works ok
});
});
Интересно то, что если я тестирую, например.для символа «A» ( if (evt.keyCode == 65)), код работает.Есть идеи, как с этим справиться?Это не работает только в FF (с Opera и IE8 все в порядке).
Решение
Вместо этого попробуйте использовать событие keyup.
$(function() {
$("#escapeInput").keyup(function(e) {
if (e.keyCode == 27) {
$(this).val("some default value");
}
});
});
Другие советы
Попробуй это
$(document).ready(function() {
$("#escapeInput").keypress(function(evt) {
var keycode = null;
if(evt.keyCode) {
keycode = evt.keyCode;
} else {
keycode = evt.which;
}
if (keycode == 27) {
$(this).val("some default value");
}
});
});
Не связан с StackOverflow