将插入符号放置在可满足元素内的span元素内

时间:2012-10-04 17:34:56

标签: javascript caret

我正在开发一个文本编辑器。我有一个内容可编辑<div>,其中将放置<span>元素和实际样式属性。 现在,我知道如何在这些span元素中放置一个插入符号,但是一旦我开始键入,文本将被打印在跨度内,div内部。

以下是插入符号的相关代码:

var rs = $( "#textEntry" ).insert( "span" ).set( "style" , style );

            sel = window.getSelection();

            sel.collapse( rs[ 0 ] , 0 );

            rs[ 0 ].focus();

rs[ 0 ]是当前的span元素。

我该如何克服这种行为?

P.S。 $不是jQuery。

1 个答案:

答案 0 :(得分:0)

玩完这个后,似乎解决方案如下:

有必要添加一些内部文本,然后在元素的第一个子节点(即TEXT节点)上设置插入符号,然后删除文本。插入符号将留在该位置,瞧!它有效。

var rs = $( "#textEntry" ).insert( "span" ).set( "style" , style ).html( "a" );

rs[ 0 ].focus();
if ( document.selection ) {
    sel = document.selection.createRange();
    sel.moveStart( 'character' , 0 );
    sel.select();
}
else{
    sel = window.getSelection();
    sel.collapse( rs[ 0 ].firstChild , 0 );
}

rs.html( "" , true );

我很高兴看到其他解决方案,伙计们!