Jen*_*nni 35 javascript jquery webkit
我在这个问题中遇到与用户相同的问题,这是由于Webkit中的这个错误.但是,提供的解决方法不适用于我的应用程序.让我重新陈述问题,这样你就不必去读另一个问题了:
我正在尝试选择textarea中的所有文本,当它获得焦点时.以下jQuery代码适用于IE/FF/Opera:
$('#out').focus(function(){
$('#out').select();
});
Run Code Online (Sandbox Code Playgroud)
但是,在Chrome/Safari中,文本被选中 - 非常简短 - 但随后会触发mouseUp事件并取消选择文本.以上链接提供了以下解决方法:
$('#out').mouseup(function(e){
e.preventDefault();
});
Run Code Online (Sandbox Code Playgroud)
但是,这种解决方法对我没有好处.我想只在用户给出textarea焦点时选择所有文本.然后,如果他选择,他必须能够只选择部分文本.任何人都可以想到仍然符合此要求的解决方法吗?
tco*_*ooc 29
这个怎么样?
$('#out').focus(function () {
$('#out').select().mouseup(function (e) {
e.preventDefault();
$(this).unbind("mouseup");
});
});
Run Code Online (Sandbox Code Playgroud)
Adr*_*ine 25
接受的答案(基本上我到目前为止找到的所有其他解决方案)都不适用于键盘焦点,即按Tab键,至少不在我的Chromium 21中.我使用以下代码段:
$('#out').focus(function () {
$(this).select().one('mouseup', function (e) {
$(this).off('keyup');
e.preventDefault();
}).one('keyup', function () {
$(this).select().off('mouseup');
});
});
Run Code Online (Sandbox Code Playgroud)
e.preventDefault()
在keyup
或focus
处理程序没有帮助,所以键盘焦点后的取消选择似乎不会发生在他们的默认处理程序中,而是介于focus
和keyup
事件之间.
正如@BarelyFitz所建议的那样,使用命名空间事件可能会更好,以免意外解除绑定其他事件处理程序.更换'keyup'
用'keyup.selectText'
并'mouseup'
用'mouseup.selectText'
了点.