Webkit[Chrome/Safari]javascript选择焦点错误的解决方法(在字段之间使用tab时)

Webkit[Chrome/Safari]javascript选择焦点错误的解决方法(在字段之间使用tab时),javascript,jquery,google-chrome,safari,webkit,Javascript,Jquery,Google Chrome,Safari,Webkit,这里也出现了类似的问题: 尝试使用以下jquery选择焦点时,它在webkit中不起作用: $('#out').focus(function(){ $('#out').select(); }); 实际上,Webkit[Chrome/Safafi]不会在聚焦时选择字段中的所有文本。这是一个已知的bug,解决方法如下。当通过鼠标单击焦点时,使用jquery提供的解决方案会起作用: $('#out').focus(function () { $('#out').select().mous

这里也出现了类似的问题:

尝试使用以下jquery选择焦点时,它在webkit中不起作用:

$('#out').focus(function(){
  $('#out').select();
});
实际上,Webkit[Chrome/Safafi]不会在聚焦时选择字段中的所有文本。这是一个已知的bug,解决方法如下。当通过鼠标单击焦点时,使用jquery提供的解决方案会起作用:

$('#out').focus(function () {
    $('#out').select().mouseup(function (e) {
        e.preventDefault();
        $(this).unbind("mouseup");
    });
});
问题:当通过点击tab键聚焦字段时(当其前面的字段处于焦点时),此解决方法不起作用。光标显示在字段的开头,未选择任何文本。我尝试了一些方法,但无法将这种变通方法转化为有效方法


非常感谢-James

这个问题可能源于我的布局/CSS/javascript。由于某些原因,在Chrome中切换到字段不会突出显示整个文本框。事实上,即使没有webkit bug的解决方法,在字段中添加标签也应始终突出显示文本框中的内容,如第二个字段所示:

在任何情况下,当我搜索这场混乱中的真正罪魁祸首时,我使用setTimeout作为解决方法:

    $(document).ready(function() {
        $('.texty').focus(texty_focus);
    });
    function texty_focus() {
        var input = $(this);
        setTimeout(function() { 
            input.select();
        },10);
    }

这对于使用移动浏览器(尤其是我的iPad)还有其他好处,所以尽管这不是最优雅的解决方案,但我还是保留了它。

问题可能源于我的布局/CSS/javascript。由于某些原因,在Chrome中切换到字段不会突出显示整个文本框。事实上,即使没有webkit bug的解决方法,在字段中添加标签也应始终突出显示文本框中的内容,如第二个字段所示:

在任何情况下,当我搜索这场混乱中的真正罪魁祸首时,我使用setTimeout作为解决方法:

    $(document).ready(function() {
        $('.texty').focus(texty_focus);
    });
    function texty_focus() {
        var input = $(this);
        setTimeout(function() { 
            input.select();
        },10);
    }

这对于使用移动浏览器(尤其是我的iPad)还有其他好处,因此,尽管这不是最优雅的解决方案,但我还是保留了它。

我不知道为什么会发生这种行为,但这种方法是有效的:

// CODE FROM GWT
TexBox.addFocusHandler(new FocusHandler()
{
  public void onFocus(FocusEvent event) {
    Timer timer = new Timer() { 
      public void run() { 
        TexBox.setSelectionRange(0, 0);
      }
    }; 
    timer.schedule(10); // WAIT 1 MILLISECOND :)
  }
}

在编写事件处理程序时,只需等待片刻,然后将选择设置为0

我不知道为什么会发生这种行为,但这种黑客方法有效:

// CODE FROM GWT
TexBox.addFocusHandler(new FocusHandler()
{
  public void onFocus(FocusEvent event) {
    Timer timer = new Timer() { 
      public void run() { 
        TexBox.setSelectionRange(0, 0);
      }
    }; 
    timer.schedule(10); // WAIT 1 MILLISECOND :)
  }
}
在编写事件处理程序时,只需等待片刻,然后将选择设置为0

另一个选项是:

var selectOnFocus = function (element) {
    if ($.browser.webkit) {
        element.click(function () {
            if ($(this).is(":focus")) {
                this.select();
            }
        });
    } else {
        element.focus(function () {
            this.select();
        });
    }
};
另一个选择是:

var selectOnFocus = function (element) {
    if ($.browser.webkit) {
        element.click(function () {
            if ($(this).is(":focus")) {
                this.select();
            }
        });
    } else {
        element.focus(function () {
            this.select();
        });
    }
};

下面是一个更简单的解决方案,没有jquery:

onclick="var self = this;setTimeout(function() {self.select();}, 0);"

下面是一个更简单的解决方案,没有jquery:

onclick="var self = this;setTimeout(function() {self.select();}, 0);"

tabbing正在用chrome为我做选择和工作。到底是什么问题。让我在windows chrome和safari中试试……似乎是我的应用程序中的其他javascript导致此解决方案在该字段被标记时无法工作。。真奇怪。。现在一个一个地禁用这些东西来解决它。tabbing正在做选择,并在chrome中为我工作。到底是什么问题。让我在windows chrome和safari中试试……似乎是我的应用程序中的其他javascript导致此解决方案在该字段被标记时无法工作。。真奇怪。。现在逐个禁用内容以解决问题。这将不利于通过
选项卡
键选择焦点(如问题中所述:“…点击选项卡键…”),这将不利于通过
选项卡
键选择焦点(如问题中所述:“…点击选项卡键…”)