2011-10-18 19 views
0

Jsfiddleの新しい子であるへのKeyDown()関数を追加します:http://jsfiddle.net/qTEmc/1/私はのcontentEditableに追加されているリンク上のキー押下イベントにイベントを関連付ける必要がありはのcontentEditableのdiv

リンクされたjfiddleのcontenteditable領域に入力しようとすると、リンクが作成され、そこに入力することができます。私はリターンを押して、あなたは改行に行く。私が望むのは、新しいリンクで関数をトリガーするためのリターンを押すことです。進歩のために、私はちょうどそれを現時点で警告を返すようにしようとしています。

これを行うには信頼できる方法がありますか?

答えて

1

キーイベントを発生させないため、リンク自体のキーイベントを検出することはできません。代わりに、contenteditable要素のために既存のkeypressハンドラを適応させて、リンクがリンク内にあるかどうかを調べる必要があります。これを行う関数があります。私もupdated your demoです。

function selectionInsideLink() { 
    var node = null, sel; 

    // Get the selection container node 
    if (window.getSelection) { 
     sel = window.getSelection(); 
     if (sel.rangeCount) { 
      node = sel.getRangeAt(0).commonAncestorContainer; 
     } 
    } else if (document.selection) { 
     sel = document.selection; 
     if (sel.type != "Control") { 
      node = sel.createRange().parentElement(); 
     } 
    } 

    // Check if the node is or is contained inside a link 
    while (node) { 
     if (node.nodeType == 1 && node.tagName.toLowerCase() == "a") { 
      return true; 
     } 
     node = node.parentNode; 
    } 
    return false; 
} 
+0

私はあなたが私の主人公だと言ったことはありますか?私は範囲と選択に新しいので、これは大きな助けです。ありがとう。 – daveyfaherty

関連する問題