1

body タグ内のカーソル位置を知りたいです。実際には、カーソル位置が class edit を持つ span タグ内にある場合、Enter キーを押したときにカーソルが新しい行にジャンプしないようにしたいです。また、カーソル位置が span タグの外にある場合は、Enter キーを押すとカーソルが新しい行にジャンプします。例を挙げて解決策を提供していただければ幸いです。私はJavaScriptがあまり得意ではありません.カーソルが新しい行にジャンプするのを止めることを知っています. これのコードになります。

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

しかし、私の場合、カーソルがスパンタグ内にある場合にのみ防止する必要があります。

前もって感謝します。

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 に答える