2015-05-27 36 views
0

我处于用户需要运行某些验证而用户输入并限制他不超出限制的情况。按键事件:如何检测用户在文本框中输入的位置

我正在使用按键事件。

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

Here是我制定的例子。

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

+1

没有jQuery的需要。只需将标签更改为: Roberto

+0

要获得插入位置,请检查以下内容:http://flightschool.acylt.com/devnotes/caret-position-woes/ –

+0

What are you正是试图完成...只是限制用户超越一定的限制,它应该在所有情况下工作(复制,在中间等编辑等)。对?或者还有其他什么? –

回答

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

相关问题