Javascript 如何将插入符号移动到内容可编辑div中的子li?
我将Javascript 如何将插入符号移动到内容可编辑div中的子li?,javascript,jquery,Javascript,Jquery,我将插入可编辑的内容div,并希望将插入符号移动到li中 我试图在li上使用jQuery聚焦,但在li上聚焦不起作用。然后,我尝试将tabindex属性添加到li,但focus突出显示了该区域,而没有实际将插入符号移动到li中 任何帮助都将不胜感激,谢谢 如果元素可以包含插入符号,则可以使用以下命令将插入符号移动到该元素: $([selector]).focus(); $([selector]).select(); //include this line if '.focus()' alone
插入可编辑的内容div
,并希望将插入符号移动到li
中
我试图在li
上使用jQuery
聚焦,但在li
上聚焦不起作用。然后,我尝试将tabindex属性添加到li
,但focus突出显示了该区域,而没有实际将插入符号移动到li中
任何帮助都将不胜感激,谢谢 如果元素可以包含插入符号,则可以使用以下命令将插入符号移动到该元素:
$([selector]).focus();
$([selector]).select(); //include this line if '.focus()' alone isn't working
虽然我不认为li
元素可以包含插入符号,但正如您所说,它位于可编辑的div
中,因此可能可以。如果不知道你的具体情况,我不能肯定
。。。在经历了很长一段时间的努力之后,我真的开始相信这是不可能的。我最终还是成功了,但没有任何进展。
()
更新
经过更长时间和更努力的尝试(在OP之前,我已经放弃了),终于找到了解决方案。
是的,它非常黑客化,并且不兼容IE9,但它确实做到了这一点:
$(窗口).on('load',function()){
$('#addlistbn')。单击(函数(){
$('div.input')。追加('ul>
');
如果(setCaret('insertedList'){$('#insertedList').remove();}//在setCaret()完全执行之前不要删除
});
函数setCaret(id){
var range=document.createRange();
range.setStart(document.getElementById(id).childNodes[0],0);
范围。塌陷(真);
var selection=window.getSelection();
selection.removeAllRanges();
选择。添加范围(范围);
返回true;
}
});代码>
.input{border:1px solid#ccc;}
插入列表
一些已经在div中的文本。
不是肯定的,但相当确定您需要一个输入字段来获取胡萝卜,您仍然可以使用普通元素进行聚焦(我怀疑这是正在发生的),但胡萝卜是输入的一部分。你到底为什么要把胡萝卜放在那里?我把它做成了一个JSFIDLE(很快就把它拼凑在一起了,所以如果你有别的意思,请告诉我),但是你的解决方案似乎不起作用。我更新了我的答案(在水平线下)…不要抱太大希望:(这是可能的,要在Internet Explorer和Firefox(以及Chrome和Safari)中找到合适的位置并使其正常工作是相当困难的).每个浏览器在处理范围时都有自己的小毛病。我在您提供的代码的帮助下使其正常工作了…这是一个疯狂的黑客解决方案…基本上我在li中添加了一个div,将选择设置为,然后删除该div。呵呵,不。遗憾的是,不。我也考虑过这一点,尽管我会选择一个
而不是一个div。但是我觉得它太乱了,因为我假设人们也可以直接在这个div中键入。然后你会得到的是,只有使用javascript添加的li
才有那些div或span,而通过直接键入它们添加的li将没有他们。