获取字符串到光标的一部分

时间:2011-07-14 14:48:01

标签: javascript jquery

我需要从输入的开头到光标取值。 val()返回整个字符串。我怎么能只有这部分我感兴趣的部分?

2 个答案:

答案 0 :(得分:2)

您可以使用selectionStart获取插入位置,所以:

var caretpos = $('input').prop('selectionStart');
var value = $('input').val().substring(0, caretpos);

http://jsfiddle.net/Zzkaw/

实际上,顾名思义,selectionStart用于选择。但是,如果没有选择selectionStart === selectionEnd,则值代表插入位置。

答案 1 :(得分:1)

假设您正在处理<input type="text">而没有换行的可能性,以下内容将起作用。不幸的是,IE&lt; 9没有其他浏览器具有的合理selectionStartselectionEnd属性,因此您必须使用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);
}