Почему входное значение не может быть изменено при нажатии escape

StackOverflow https://stackoverflow.com/questions/1253770

Вопрос

У меня есть ввод (внешняя форма), который фиксирует имя изображения.Пользователь должен ввести новое имя и нажать 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");
                }
            });
        });
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top