代码之家  ›  专栏  ›  技术社区  ›  stej

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

  •  1
  • stej  · 技术社区  · 15 年前

    我有一个输入(外部窗体)来捕获图像的名称。用户应填写一个新名称并按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”字符(如果(evt.keycode==65)),代码就会工作。 知道怎么处理吗?它不仅适用于FF(歌剧和IE8都可以)。

    2 回复  |  直到 15 年前
        1
  •  2
  •   Joe Chung    15 年前

    尝试使用keyup事件。

    $(function() {
        $("#escapeInput").keyup(function(e) {
            if (e.keyCode == 27) {
                $(this).val("some default value");
            }
        });
    });
    
        2
  •  0
  •   Arun P Johny    15 年前

    试试这个

            $(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");
                    }
                });
            });