我做了一个jsFiddle!
http://jsfiddle.net/31mts93v/
我想创建一个输入框,其功能如下:当您按左箭头键和右箭头键时,它会根据光标所在的位置选择(就像鼠标选择一样)上一个单词或下一个单词。
首先,我需要能够在你按下左箭头键时动态地选择文本的一部分,尽管它看起来只是移动了光标,没有选择任何内容,就像上面的jsFiddle一样。
HTML为:<input type='text' id='humantext' class='form-control' value='foo bar and bar bar foo, a bar fooey foo foo bar' />
JS是:
$(document).ready(function () {
function createSelection(start, end) {
var field = document.getElementById('humantext');
console.log(start + ' ' + end);
if( field.createTextRange ) {
console.log('createtextrange');
var selRange = field.createTextRange();
selRange.collapse(true);
selRange.moveStart('character', start);
selRange.moveEnd('character', end);
selRange.select();
} else if( field.setSelectionRange ) {
console.log('setSelectionRange');
field.focus();
field.setSelectionRange(2, 7);
} else if( field.selectionStart ) {
console.log('selectionStart');
field.selectionStart = start;
field.selectionEnd = end;
}
field.focus();
}
$("#humantext").keydown(function (e) {
var words = $(this).val().split(' ');
if (e.keyCode == 37) {
// Left Arrow
createSelection(0,5);
}
if (e.keyCode == 38) {
// Right Arrow
createSelection(10,20);
}
});
});
第二次编辑经过一个上午,我终于做到了。我最大的障碍是当按下箭头键时无法防止默认设置。下面是jsfiddle:http://jsfiddle.net/31mts93v/3/
1条答案
按热度按时间iyr7buue1#
需要做的三件事:
event.preventDefault()
相加完整代码:
http://jsfiddle.net/omahlama/pszwmomk/1/