我找到了this question,它提供了一个解决方案来计算文本或输入框中插入符的确切位置。
就我的目的而言,这太过分了。我只想知道插入符号何时位于输入框所有文本的结尾。有没有一种简单的方法可以做到这一点?
答案 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中只有selectionStart
和selectionEnd
)。
现场演示: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;
}