我需要从输入的开头到光标取值。 val()返回整个字符串。我怎么能只有这部分我感兴趣的部分?
答案 0 :(得分:2)
您可以使用selectionStart
获取插入位置,所以:
var caretpos = $('input').prop('selectionStart');
var value = $('input').val().substring(0, caretpos);
实际上,顾名思义,selectionStart
用于选择。但是,如果没有选择selectionStart === selectionEnd
,则值代表插入位置。
答案 1 :(得分:1)
假设您正在处理<input type="text">
而没有换行的可能性,以下内容将起作用。不幸的是,IE&lt; 9没有其他浏览器具有的合理selectionStart
和selectionEnd
属性,因此您必须使用TextRange
来解决这个问题。
jsFiddle:http://jsfiddle.net/UcnCc/
代码:
function getTextToCaret(input) {
var caretPos = 0;
if (typeof input.selectionStart == "number") {
caretPos = input.selectionStart;
} else if (document.selection) {
input.focus();
var textRange = input.createTextRange();
var selRange = document.selection.createRange();
textRange.setEndPoint("EndToStart", selRange);
caretPos = textRange.text.length;
}
return input.value.slice(0, caretPos);
}