1

<br>コンテンツの編集可能な div で Enter キーを押すと挿入される作業コードがあります。(ブラウザーには<div><p>代わりに挿入するさまざまなデフォルトがあります)

問題は、順序付きまたは順序なしのリストを作成するときに、Enter キーを押して別のリスト項目を追加するというデフォルトの動作を強制終了することです。だから私の質問は、テキスト挿入ポイントがリスト項目内にあるかどうかを検出できますか?もしそうなら、Enterキーを処理するjavascriptを無効にしますか?

作業コード: http://jsfiddle.net/kthornbloom/RCdhS/

4

2 に答える 2

7

選択を含むノードで DOM ツリーのチェックを行う必要があります。すべての主要なブラウザーで動作するデモを次に示します。

http://jsfiddle.net/CeMxs/2/

コード:

function isSelectionInsideElement(tagName) {
    var sel, containerNode;
    tagName = tagName.toUpperCase();
    if (window.getSelection) {
        sel = window.getSelection();
        if (sel.rangeCount > 0) {
            containerNode = sel.getRangeAt(0).commonAncestorContainer;
        }
    } else if ( (sel = document.selection) && sel.type != "Control" ) {
        containerNode = sel.createRange().parentElement();
    }
    while (containerNode) {
        if (containerNode.nodeType == 1 && containerNode.tagName == tagName) {
            return true;
        }
        containerNode = containerNode.parentNode;
    }
    return false;
}
于 2013-02-05T00:21:57.033 に答える
1

http://jsfiddle.net/RCdhS/2/

.on('keypress', 'document', function (e) {
    if (!$('li').focus();) {
    ...
    }
  }
});
于 2013-01-30T17:16:41.957 に答える