Keypress事件:如何检测用户在文本框中输入的位置

时间:2015-05-27 07:39:16

标签: javascript jquery event-handling keypress

我遇到的情况是用户需要在用户输入时运行一些验证并限制他不要超出限制。

我正在使用按键事件。

$(document).on('keypress', "#range", function (e) {});

Here就是我制定的例子。

当用户附加到现有值时,它正常工作,但是当用户通过在中间添加或编辑来更改它时。那么如何在用户输入时检测光标位置(索引)。同时如何知道文本框中的整个文本是否被选中。

1 个答案:

答案 0 :(得分:0)

在您的情况下,您应该使用window.getSelection()实际计算选择范围。

$(document).on('keypress', '#range', function (e) {
    var sel = document.getSelection();
    var keyCode = e.which || e.keyCode;
    var pressedChar = String.fromCharCode(keyCode);
    var start = sel.extentOffset;
    var end = sel.baseOffset;
    var str = this.innerHTML;

    // Then later magic!! 
    // Source: http://stackoverflow.com/a/1431113/1577396
    var curValue = str.substr(0, start) + pressedChar + str.substr(end);

    // other code
});

<强> Working Fiddle