2011-10-18 29 views
0

的jsfiddle的新的兒童:http://jsfiddle.net/qTEmc/1/添加的keyDown()函數來<a>這是一個CONTENTEDITABLE DIV

我需要事件與它們在CONTENTEDITABLE添加鏈接的按鍵事件相關聯。

如果您嘗試在鏈接的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

相關問題