Webkit[Chrome/Safari]javascript选择焦点错误的解决方法(在字段之间使用tab时)
这里也出现了类似的问题: 尝试使用以下jquery选择焦点时,它在webkit中不起作用: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
$('#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导致此解决方案在该字段被标记时无法工作。。真奇怪。。现在逐个禁用内容以解决问题。这将不利于通过
选项卡
键选择焦点(如问题中所述:“…点击选项卡键…”),这将不利于通过选项卡
键选择焦点(如问题中所述:“…点击选项卡键…”)