如何在body标签内找到光标的位置

时间:2013-09-22 07:42:28

标签: javascript jquery

我想知道body标签内的光标位置。实际上我想要的是,如果光标位置在具有类编辑的span标签内,那么我想在按Enter键时阻止光标跳到新行。如果光标位置超出span标记,则按Enter键时光标将跳转到新行。如果您通过示例提供解决方案,我将非常感谢您。 我在javascript中不是那么强大。我知道要停止光标跳到新行。这个代码将是。

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

但在我的情况下,只有当光标位于span标记内时才能进行预防。

提前致谢。

3 个答案:

答案 0 :(得分:1)

试试这个:

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...

答案 1 :(得分:0)

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

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

请注意,旧浏览器不支持此功能,最明显的是IE8 - 。

答案 2 :(得分:0)

希望这可能对您有所帮助。

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