【问题标题】:Javascript: escape key clears text in firefoxJavascript:转义键清除 Firefox 中的文本
【发布时间】:2013-05-15 20:04:16
【问题描述】:

我有一个具有某些功能的输入类型文本。文本始终具有焦点,但同时文本可以更改。当您按下退出键时,应该关闭某些东西。我确实为此绑定了一个关键事件,它工作正常。 我的问题是,在 Firefox 中,按转义键时文本总是会清除。 你可以在这里测试它:

$('#asd').click(function() {
    $(this).val('huhu');
});

$('#asd').keydown(function(e) {
    if(e.which == 27) {
        e.preventDefault();
        return false;
    }
});

http://jsfiddle.net/hJ9th/1/

单击文本字段,然后按 Escape。文字消失。我试图阻止它,但它不起作用。

我能做些什么来防止这种情况发生?

【问题讨论】:

  • 在小提琴中它对我来说工作正常
  • 在 Firefox 中?在 chrome 中它适用于我,但不适用于 Firefox...

标签: javascript keyevent


【解决方案1】:

超级脏,但我想我正在使用它:

$('#asd').click(function() {
    $(this).val('huhu');
});

$('#asd').keydown(function(e) {
    if(e.which == 27) {
        var $this = $(this);
        $this.blur();
        setTimeout(function() {
            $this.focus();
        }, 10);
    }
});

http://jsfiddle.net/hJ9th/2/

【讨论】:

    【解决方案2】:

    这是 Firefox 的内置行为。

    如果要阻止,需要附加一个JS/jQuery的handler来拦截keydown事件,如果keydown为ESC则返回false。

    一个例子是here

    【讨论】:

    • 这与问题中描述的 user2170547 已经使用的解决方案不完全相同吗?此外,您的链接不会指向 keydown 示例。
    • @AndreyShchekin 链接示例之间的唯一区别是将 keyup 更改为 keydown。我自己也经历过这种行为,我不确定这是否能在所有情况下解决它。我回答了这个问题,不知道你为什么投了反对票。
    • keydown 上的 jQuery 处理程序返回 false 已经在问题主体中——为什么要回答同样的问题?
    猜你喜欢
    • 1970-01-01
    • 2011-06-07
    • 1970-01-01
    • 1970-01-01
    • 2012-07-27
    • 2011-10-30
    • 1970-01-01
    • 1970-01-01
    • 2010-10-12
    相关资源
    最近更新 更多