【问题标题】:Text is selected automatically on element focus on some browsers在某些浏览器上,在元素焦点上自动选择文本
【发布时间】:2011-08-24 19:06:10
【问题描述】:

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

是否可以取消选择焦点上的文本或阻止此选择首先发生?

【问题讨论】:

    标签: jquery focus


    【解决方案1】:

    我不太确定,但我认为这可能是一个解决方案,或者只是使用属性onselect="return;"

    $('#selector').select(function (e){
       e.preventDefault();
       return;
    });
    

    【讨论】:

    • 你用的是什么chrome版本?
    • @town 我使用与你提供的演示相同的版本
    • 多么奇怪!好吧,我难住了。转到谷歌... :)
    【解决方案2】:

    在焦点上将文本框的值分配给自身将取消选择文本。

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

    Working Demo

    【讨论】:

    • 感谢,但在 IE 中存在问题,当未聚焦并再次聚焦时,它将在输入文本的开头开始编写测试...
    • @newbie:我明白你的意思了,IE9 将光标跳回到input 的开头。你用的是什么版本?
    • IE8,但这对 IE 来说是正常的,没有什么开箱即用的,它总是需要修复
    【解决方案3】:

    我得到它使用以下代码:

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

    【讨论】:

    • 在 Chrome 11.0.696.65 上绝对不适合我。我建议使用我的解决方案(不是说我有偏见或任何东西!;))因为selectionStartselectionEnd 跨浏览器不一致。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-28
    • 2015-03-27
    • 1970-01-01
    • 2016-06-03
    • 2023-01-13
    • 2016-03-05
    • 1970-01-01
    相关资源
    最近更新 更多