为什么按escape后输入值无法更改

发布于 2024-08-01 13:51:13 字数 928 浏览 6 评论 0原文

我有一个输入(外部表单)来捕获图像的名称。 用户应填写新名称并按 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”字符(if(evt.keyCode == 65)),代码就会起作用。 知道如何处理吗? 它不仅仅在 FF 中工作(Opera 和 IE8 都可以)。

I have an input (outside form) that captures name of an image. User should fill in a new name and hit enter. Ajax callback renames the image. This works.

I'd like to add ability to 'reset' the input content when the user presses escape (#27). But I'm not able to fill the value of the input with my value.

The code is

<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
    });
});

The interesting thing is that if I test e.g. for 'A' character ( if (evt.keyCode == 65)), the code works.
Any idea how to handle it? It doesn't work only in FF (Opera and IE8 are OK).

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

2024-08-08 13:51:13

尝试这个

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

Try this

$(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");
        }
    });
});
盛夏已如深秋| 2024-08-08 13:51:13

尝试改用 keyup 事件。

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

Try using the keyup event instead.

$(function() {
    $("#escapeInput").keyup(function(e) {
        if (e.keyCode == 27) {
            $(this).val("some default value");
        }
    });
});
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文