确定插入符号何时到达输入框的末尾

时间:2011-10-02 17:06:44

标签: javascript

我找到了this question,它提供了一个解决方案来计算文本或输入框中插入符的确切位置。

就我的目的而言,这太过分了。我只想知道插入符号何时位于输入框所有文本的结尾。有没有一种简单的方法可以做到这一点?

3 个答案:

答案 0 :(得分:4)

在所有现代浏览器中:

//input refers to the text box
if(input.value.length == input.selectionEnd){
    //Caret at end.
}

输入元素的selectionEnd属性等于最高选择索引。

答案 1 :(得分:2)

<script>
input = document.getElementById('yourinputfieldsid');
if(input.selectionEnd == input.selectionStart && input.value.length == input.selectionEnd){
//your stuff
}
</script>

这将检查插入符号实际上是否在最后,并确保它不仅仅是因为选择它显示了结束值。

答案 2 :(得分:2)

在选择某些文本时,您没有指定要发生的事情,因此在这种情况下,我的代码只检查选择的结尾是否在输入的末尾。

这是一个可以在IE中工作的跨浏览器功能&lt; 9(其他答案不会:IE在版本9中只有selectionStartselectionEnd)。

现场演示:http://jsfiddle.net/vkCpH/1/

代码:

function isCaretAtTheEnd(el) {
    var valueLength = el.value.length;
    if (typeof el.selectionEnd == "number") {
        // Modern browsers
        return el.selectionEnd == valueLength;
    } else if (document.selection) {
        // IE < 9
        var selRange = document.selection.createRange();
        if (selRange && selRange.parentElement() == el) {
            // Create a working TextRange that lives only in the input
            var range = el.createTextRange();
            range.moveToBookmark(selRange.getBookmark());
            return range.moveEnd("character", valueLength) == 0;
        }
    }
    return false;
}