2011-05-13 38 views
0

我有这个自动搜索文本输入,当用户键入一个字母时,它会进行新的搜索。现在我必须在每次搜索后关注这个元素,但是我在除Firefox之外的所有浏览器中选择了输入中的文本。如果用户键入另一个字母,则选定的文本将被删除,这意味着用户必须在用户输入另一个字母之前取消选择文本。当然,用户会输入新的字母,并认为这个程序有问题。在某些浏览器上的元素焦点上自动选择文本

是否可以取消选择焦点上的文本或防止此选择发生在第一位?

回答

3

分配文本框的值本身的重点将取消选择的文本。

$('input').focus(function() { 
    var elem = $(this); 
    elem.val(elem.val()); 
}); 

Working Demo

+0

好吧,我用这个... – newbie 2011-05-13 10:16:24

+0

Thanx为此,但在IE中有问题,当未聚焦和再次聚焦时,它将开始在输入文字开始处编写测试.. – newbie 2011-05-13 10:57:44

+0

@newbie:我明白你的意思了,IE9将光标跳回到'input'的开头。你使用什么版本? – Town 2011-05-13 11:11:23

0

我也不太清楚,但我认为这可能是一个解决方案或简单地使用属性onselect="return;"

​​
+0

这不会出现在Chrome的工作:[演示](http://jsfiddle.net/Town/ r6Knr /)。 – Town 2011-05-13 10:01:55

+0

你使用什么chrome版本? – Val 2011-05-13 10:31:35

+0

@town Im使用相同的版本我提供的演示作品 – Val 2011-05-13 10:33:28

0

我得到了它与下面的代码工作:

var searchInput = $('input.search'); 
var l = searchInput.val().length; 
searchInput.attr('selectionStart', l); 
searchInput.attr('selectionEnd', l); 
searchInput.focus(); 
+0

这不适用于Chrome:[演示](http://jsfiddle.net/Town/D6Vr7/) – Town 2011-05-13 10:07:28

+0

这就是奇怪,因为我在Chrome上测试它,我会尝试你的代码... – newbie 2011-05-13 10:11:56

+0

绝对不适合我在Chrome 11.0.696.65。我建议使用我的解决方案(不是我有偏见或任何东西!)),因为'selectionStart'和'selectionEnd'不是一致的跨浏览器。 – Town 2011-05-13 10:16:18

相关问题