1

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

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

但在我的情况下,只有当光标在 span 标签内时才应该预防。

提前致谢。

4

3 回答 3

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...
于 2013-09-22T07:57:47.100 回答
0

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

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

请注意,旧浏览器不支持此功能,尤其是 IE8-。

于 2013-09-22T07:47:17.930 回答
0

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

$('#myarea')[0].selectionStart; // return start index of cursor 
于 2013-09-22T07:51:40.643 回答