如何查找光标在正文标记中的位置

how to find the position of a cursor inside body tag

本文关键字:正文 位置 光标 何查找 查找      更新时间:2023-09-26

我想知道正文标签内的光标位置。实际上,如果光标位置在具有类编辑的span标签内,那么我想防止光标在按Enter键时跳转到新行。如果光标位置不在span标签之外,则按回车键时光标将跳转到新行。如果您提供示例解决方案,我将非常感谢您。我对javascript不是那么强。我知道要阻止光标跳到新行。这个代码将是。

$('p').keydown(function(e){
  e.preventDefault();
   });

但就我而言,仅当光标位于 span 标签内时,才应进行预防。

提前谢谢。

试试这个:

var canPressEnter = true;
$("span.edit").on("focus", function(){
    canPressEnter = false;
}).on("keypress", function(e){
    var code = (e.keyCode ? e.keyCode : e.which);
    if (canPressEnter === false && code === 13)
    {
        e.preventDefault();
    }
}).on("blur", function(){
    canPressEnter = true;
});

http://jsfiddle.net/hescano/S6hzY/

如果您不需要来自其他地方的标志,这将可以:

$("span.edit").on("keypress", function(e){
    var code = (e.keyCode ? e.keyCode : e.which);
    if (code === 13)
    {
        e.preventDefault();
    }
});

http://jsfiddle.net/hescano/S6hzY/1/

这对我有用:

tinyMCE.init({
    theme : "advanced",
    mode: "exact",
    elements : "elm1",
    setup : function(ed) {
    ed.onInit.add(function(ed, evt) {
        tinymce.dom.Event.add(ed.getDoc(), 'keydown', function(e) {
            var existing = tinyMCE.get('elm1').getElement(e);
            var code = (e.keyCode ? e.keyCode : e.which);
            var spans = tinyMCE.activeEditor.getBody().getElementsByTagName("span");
            if (spans.length > 0)
            {
               for (var i = 0; i < spans.length; i++)
               {
                  if (spans[i].getAttribute("class") === "AMedit")
                  {
                     if (code === 13)
                     {
                        e.preventDefault();
                     }
                  }
               }
            }
        });
      });
    },
         themes...

如果没有选择,则可以使用属性 .selectionStart 或 .selectionEnd(如果没有选择,它们是相等的)。

var cursorPosition = $('#myTextarea').prop("selectionStart");

请注意,这在较旧的浏览器中不受支持,尤其是 IE8-。

希望这对您有所帮助。

$('#myarea')[0].selectionStart; // return start index of cursor