我需要实现退格键行为,以便将光标放在左侧一个位置,而无需用户按下退格键,而是在我的(contenteditable)div 中以编程方式添加字符串之后,我需要光标自动移动一个左边的位置。我尝试将 \b 添加到我的字符串中,但没有成功。我怎样才能实现这种行为(最好使用 Javascript)?
谢谢!
我需要实现退格键行为,以便将光标放在左侧一个位置,而无需用户按下退格键,而是在我的(contenteditable)div 中以编程方式添加字符串之后,我需要光标自动移动一个左边的位置。我尝试将 \b 添加到我的字符串中,但没有成功。我怎样才能实现这种行为(最好使用 Javascript)?
谢谢!
您可以通过将浏览器事件注入可编辑的内容来轻松解决此问题。我正在展示一个使用左箭头键的示例,因为您写道要移动光标,我希望这是您想要的,因为 Backspace 会删除一个字符。如果要删除,请用退格键替换 left 的键码。
这是使用 jQuery 完成的方法:
var ev = jQuery.Event("keydown"); // Creates a new keydown event
ev.keyCode = $.ui.keyCode.LEFT; // Sets the event keyCode to be the left arrow button
$('#contentEditableContainer').trigger(ev);
要包括 jQuery:
<head>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
</head>
这是我使用的函数,请确保包含 jQuery。只需使用 id 调用此函数到您希望退格执行的文本框:
function backSpace(id){
var txt = $(id);
var startPos = txt[0].selectionStart;
var endPos = txt[0].selectionEnd;
var scrollPos = txt[0].scrollTop;
console.log("start: " + startPos + " end: " + endPos + " scrollPos: " + scrollPos);
if (endPos - startPos > 0){
txt.val(txt.val().slice(0, startPos) + txt.val().slice(endPos, 100));
}else if (endPos > 0){
txt.val(txt.val().slice(0, startPos-1) + txt.val().slice(startPos, 100));
}else{
startPos = txt.val().length+1;
}
txt.focus();
txt[0].setSelectionRange(startPos-1,startPos-1);
}