为什么在按下escape时无法更改输入值

时间:2009-08-10 08:45:04

标签: javascript jquery input reset

我有一个输入(外部表单),可以捕获图像的名称。用户应填写新名称并按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都可以)。

2 个答案:

答案 0 :(得分:2)

请尝试使用keyup事件。

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

答案 1 :(得分: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");
                }
            });
        });