制表时选择textarea文本

Emp*_*ger 1 javascript jquery textarea focus

我在Stack Overflow上发现了这个问题,并使用了顶部答案中给出的代码。

否则,它的工作非常好,但有一个缺点。在我的页面上,我有多个文本区域。实际上,我使用的选择器仅为"textarea"。

但是,当从一个文本区域“制表”到另一文本区域(使用Tab键跳到下一个文本区域)时,显然不会触发焦点事件,并且文本也不会被选中。

如何修改该代码以通过单击和按Tab起作用?

JSFiddle在这里;http://jsfiddle.net/qQDbZ/ 我在Chrome上,并且在单击textarea时确实选择了全部,但制表键却没有。

rex*_*mac 5

我可以通过以下解决方法来解决此问题:

$('textarea').focus(function() {
    var $this = $(this);
    $this.select().mouseup(function() {
        $this.off('mouseup');
        return false;
    });
}).keyup(function(e) {
    if(e.which === 9) {
        this.select();
    }
});
Run Code Online (Sandbox Code Playgroud)

演示:http://jsfiddle.net/KfFPM/3/

我在Chrome 21,Safari 6,Firefox 14,Opera 12和IE 9中测试了上述内容。我现在很高兴。在向前移动时向后移动和向后移动+向后移动时有效。

绑定到keydown无效。

我仍然认为此解决方法是不必要的。我最好的猜测是,Webkit浏览器会在文本区域内检测到该选项卡作为按键,因此取消选择文本,就像在文本区域中选择了某些文本然后开始输入时,任何浏览器都一样。