当使用Javascript动态添加数据时,如何获取contenteditable div文本末尾的插入符号位置?
注意:在将其标记为复制之前,请理解我正在使用Javascript中的keypress函数动态添加数据 我正在尝试创建一个脚本,将数据动态添加到contenteditable div中,我可以使用下面的代码实现这一点当使用Javascript动态添加数据时,如何获取contenteditable div文本末尾的插入符号位置?,javascript,jquery,css,Javascript,Jquery,Css,注意:在将其标记为复制之前,请理解我正在使用Javascript中的keypress函数动态添加数据 我正在尝试创建一个脚本,将数据动态添加到contenteditable div中,我可以使用下面的代码实现这一点 var enterPressed = 0; window.onkeypress = function (e) { var keyCode = (e.keyCode || e.which); if (keyCode === 13) {
var enterPressed = 0;
window.onkeypress = function (e) {
var keyCode = (e.keyCode || e.which);
if (keyCode === 13) {
if (enterPressed === 0) {
e.preventDefault();
var z = document.createElement('p'); // is a node
z.innerHTML = "<br><p>R: ";
document.getElementById("textbox").appendChild(z);
enterPressed++;
} else if (enterPressed === 1) {
e.preventDefault();
var z = document.createElement('p'); // is a node
z.innerHTML = "<br><b>M: ";
document.getElementById("textbox").appendChild(z);
enterPressed++;
enterPressed = 0;
}
}
};
var enterPressed=0;
window.onkeypress=功能(e){
var keyCode=(e.keyCode | | e.which);
如果(键代码===13){
如果(输入按下===0){
e、 预防默认值();
var z=document.createElement('p');//是一个节点
z、 innerHTML=“
R:”;
document.getElementById(“文本框”).appendChild(z);
输入++;
}否则如果(按enterPressed==1){
e、 预防默认值();
var z=document.createElement('p');//是一个节点
z、 innerHTML=“
M:”;
document.getElementById(“文本框”).appendChild(z);
输入++;
enterPressed=0;
}
}
};
所以当按下enter键时,我得到M:如果按下enter键两次,我得到R:然后函数复位
问题是,每当我按下enter键时,插入符号位置仍然保留在文档的开头,而理想情况下,它应该在末尾,这样我就可以进一步键入内容
您可以使用此功能将光标移动到末端
function setEndOfContenteditable(contentEditableElement) {
var range,selection;
if(document.createRange)//Firefox, Chrome, Opera, Safari, IE 9+
{
range = document.createRange();//Create a range (a range is a like the selection but invisible)
range.selectNodeContents(contentEditableElement);//Select the entire contents of the element with the range
range.collapse(false);//collapse the range to the end point. false means collapse to end rather than the start
selection = window.getSelection();//get the selection object (allows you to change selection)
selection.removeAllRanges();//remove any selections already made
selection.addRange(range);//make the range you have just created the visible selection
}
else if(document.selection)//IE 8 and lower
{
range = document.body.createTextRange();//Create a range (a range is a like the selection but invisible)
range.moveToElementText(contentEditableElement);//Select the entire contents of the element with the range
range.collapse(false);//collapse the range to the end point. false means collapse to end rather than the start
range.select();//Select the range (make it the visible selection
}
}
当您像这样附加新的子对象时,只需要使用这个函数
let child = document.getElementById("textbox").appendChild(z);
setEndOfContenteditable(child)
这是完整的工作代码
函数setEndOfContenteditable(contentEditableElement){
var范围、选择;
if(document.createRange)//Firefox、Chrome、Opera、Safari、IE 9+
{
range=document.createRange();//创建一个范围(一个范围与所选内容类似,但不可见)
range.selectNodeContents(contentEditableElement);//选择具有范围的元素的全部内容
range.collapse(false);//将范围折叠到终点。false表示折叠到终点而不是起点
selection=window.getSelection();//获取选择对象(允许您更改选择)
selection.removeAllRanges();//删除所有已做的选择
selection.addRange(range);//使刚刚创建的范围成为可见的选择
}
else if(document.selection)//IE 8及更低版本
{
range=document.body.createTextRange();//创建一个范围(范围与所选内容类似,但不可见)
range.moveToElementText(contentEditableElement);//使用范围选择元素的全部内容
range.collapse(false);//将范围折叠到终点。false表示折叠到终点而不是起点
range.select();//选择范围(使其成为可见选择
}
}
var=0;
window.onkeypress=功能(e){
var keyCode=(e.keyCode | | e.which);
如果(键代码===13){
如果(输入按下===0){
e、 预防默认值();
var z=document.createElement('p');//是一个节点
z、 innerHTML=“
R:”;
让child=document.getElementById(“文本框”).appendChild(z);
setEndOfContenteditable(子级)
输入++;
}否则如果(按enterPressed==1){
e、 预防默认值();
var z=document.createElement('p');//是一个节点
z、 innerHTML=“
M:”;
让child=document.getElementById(“文本框”).appendChild(z);
setEndOfContenteditable(子级)
输入++;
enterPressed=0;
}
}
};
var elem=document.getElementById(“文本框”);
setEndOfContenteditable(元素)
JS-Bin
请按回车键
非常感谢您,Sifat,我找到了这个解决方案,但我没有附加它。