4

我试图解释我的问题。

我有一个<div contenteditable="true" id="my_editeur>,我在其中定义了一个按键“事件”,它允许我在用户单击“输入”时添加一个“p”。

它运行良好,但我想在这个新的“p”元素上定义光标,因为目前我的光标停留在第一个“p”元素上。

我曾尝试使用 jquery 焦点功能,但似乎我们不能将此功能用于“p”元素。

你知道我该怎么做才能解决我的问题吗?

非常感谢您的帮助。

我的代码:

$('#my_editeur').keypress(function(e){
        if(e.keyCode == 13) {
            e.preventDefault();
            $(this).append('<p ><br /></p>');          
        }
    });  
4

4 回答 4

1

不确定这是否可行,但您是否尝试过将 a 添加tabindex="0"<p>? 这意味着它可以专注于大多数浏览器。

于 2010-03-09T15:40:05.690 回答
1

创建段落时,请包含一个不间断的空格。

var newP = $("<p>&#160;</p>").get(0);

对于 Firefox 和符合标准的浏览器,

var rng = document.createRange();
rng.selectNodeContents(  newP  );
var sel = document.defaultView.getSelection();
sel.removeAllRanges();                          
sel.addRange(rng);

对于 IE,

var rng = document.body.createTextRange();
rng.moveToElementText(  newP );
rng.select();
于 2010-03-17T15:59:52.603 回答
0

如果我错了,请纠正我,但您希望能够将文本输入到<p>元素中,就像它是 a<input>或 a一样<textarea>?如果是这样,这是我整理的一个技巧。这显然不完整,只是一个概念证明。

<!doctype html>
<html>
  <head>
    <script src="http://code.jquery.com/jquery-latest.js"></script>
    <script type="text/javascript">

      $(document).ready(
        function(){

          $('#textbox').click(
            function(){
              $(this).css('border','1px solid #f00');
              $('#mytext').focus();
            }
          );

          $('#mytext').keypress(
            function(event){

              if(event.keyCode==13){
                $('#textbox').append('<br>');
              }
              else{
                $('#textbox').append(String.fromCharCode(event.which));
              }
            }
          );

        }
      );

    </script>
    <style type="text/css">

      #mytext{
        position: fixed;
        top: -100px;
        left: 0;
      }

    </style>
  </head>
  <body>
    <input type="text" id="mytext" tabindex="0">
    <div id="textbox"><span>hello</span></div>
  </body>
</html>

您应该能够单击<div>“你好”并在其中输入更多文本。

于 2010-03-09T17:04:03.830 回答
0

您可以将选择设置为新 <p> 内的DOMRange吗?我想执行 windows.getSelection() 来检索当前的 DOMRange 并更改它的 startContainer、endContainer、startOffset、endOffset。

于 2010-03-14T01:43:10.860 回答