【问题标题】:Set focus and cursor to end of text input field / string w. Jquery [duplicate]将焦点和光标设置到文本输入字段/字符串 w 的末尾。 jQuery [重复]
【发布时间】:2013-11-03 06:50:17
【问题描述】:

我有以下功能,可以将选择器作为高级选项添加到搜索输入中,就像堆栈溢出高级搜索一样。

当您单击要搜索的内容时,它会添加一个前缀。请参阅下面的 Jquery:

<script>
$(document).ready(function () {

        $("table#advanced_search_options tr").click(function () {
            var SearchSelection = $(this).children("td:last-of-type").html();
            var SearchInput = $('#Search');
            SearchInput.val(SearchInput.val() + SearchSelection);
            return false;
            alert(SearchSelection);
        });
});
</script>

如何操作上述内容以将焦点集中到#search 输入,将胡萝卜(闪烁的文本插入光标)放置到插入的文本/值的末尾? 例如。

HC:

【问题讨论】:

    标签: javascript jquery html css


    【解决方案1】:

    您可以使用 Input.setSelectionRange 来完成此操作,它是 Range API 的一部分,用于与文本选择和文本光标进行交互:

    var searchInput = $('#Search');
    
    // Multiply by 2 to ensure the cursor always ends up at the end;
    // Opera sometimes sees a carriage return as 2 characters.
    var strLength = searchInput.val().length * 2;
    
    searchInput.focus();
    searchInput[0].setSelectionRange(strLength, strLength);
    

    演示:Fiddle

    【讨论】:

    • 以防万一:if (newEl.attr('type') != 'number') {} 阻止您尝试在不支持设置插入符号的输入类型上设置插入符号
    • 看到这个分叉:http://jsfiddle.net/msLkp1gt/1/,我希望用户首先关注,当他们使用选项卡关注第二个时,光标应该结束。
    • 您应该将值长度乘以 2,因为 Opera 有时会将回车视为 2 个字符。因此,不是每次都在末尾选择文本。
    • 这对我不起作用!我把它包裹在setTimeout(function() { //code }, 0);
    • 正如@DerkJanSpeelman 提到的那样,对我来说,它必须被包装在 0 的 setTimeout 中
    猜你喜欢
    • 2011-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-08
    • 2011-02-22
    • 1970-01-01
    相关资源
    最近更新 更多