Javascript退格功能

时间:2012-10-15 09:16:17

标签: javascript cursor caret backspace

我需要实现退格键行为,以便我的光标放在左边一个位置,而不是用户按Backspace键,而是在我的(contenteditable)div中以编程方式添加字符串后,我需要cusor来自动向左移动一个位置。我尝试将\ b添加到我的字符串中,没有成功。我怎样才能实现这种行为(最好使用Javascript)?

谢谢!

2 个答案:

答案 0 :(得分:0)

您可以通过将浏览器事件注入可编辑的内容轻松解决此问题。我正在使用左箭头键显示一个示例,因为您写道要移动光标,我希望这是你想要的,因为Backspace会删除一个字符。如果要删除,请用退格键替换左侧的键码。

以下是使用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>

答案 1 :(得分:0)

这是我使用的函数,请确保包含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);
}