Javascript:escape key清除firefox中的文本

时间:2013-05-15 00:14:34

标签: javascript keyevent

我有一个带有一些功能的输入类型文本。文本始终具有焦点,但同时文本可能会发生变化。按下转义键时应关闭某些内容。我确实绑定了一个关键事件,它工作正常。 我的问题是在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。文字消失了。我试图阻止它,但它不起作用。

我该怎么做才能防止这种情况?

2 个答案:

答案 0 :(得分: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/

答案 1 :(得分:-1)

这是Firefox中的内置行为。

如果你想阻止它,你需要附加一个JS / jQuery处理程序来拦截keydown事件,如果keydown是ESC则返回false。

一个例子是here