为什么在按Escape键时不能更改输入值

问题描述 投票:1回答:2

我有一个输入(外部形式),用于捕获图像名称。用户应填写一个新名称,然后按Enter。 Ajax回调将重命名图像。这有效。

我想增加在用户按下转义键时重新设置输入内容的功能(#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'字符(如果(evt.keyCode == 65)),该代码有效。知道如何处理吗?它仅在FF中不起作用(Opera和IE8可以)。

javascript jquery input reset
2个回答
2
投票

尝试改用keyup事件。

$(function() {
    $("#escapeInput").keyup(function(e) {
        if (e.keyCode == 27) {
            $(this).val("some default value");
        }
    });
});

0
投票

尝试一下

$(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");
        }
    });
});
© www.soinside.com 2019 - 2024. All rights reserved.