具有contenteditable的内联自动更正

时间:2015-03-15 23:10:35

标签: javascript jquery contenteditable

是否可以在iOS中为可疑字段制作类似自动更正功能的内容?当用户输入时,将检查拼写(我已经有了这部分),但是我需要一种方法来纠正这个词。我可以替换contenteditable的整个html,但然后光标位置丢失,并且用户可能会在重写html之前尝试键入。理想情况下,这只会在用户光标之前替换x个字符。这可能吗?

1 个答案:

答案 0 :(得分:2)

功能中的核心替换节点类型可由此功能提供支持:

function runRep(from, to) {
    var sel = document.getSelection(),
        nd = sel.anchorNode,
        text = nd.textContent.slice(0, sel.focusOffset),
        newText = text.replace(from, to),
        wholeNew = nd.textContent.replace(text, newText),
        range = document.createRange();

    nd.textContent = wholeNew;
    range.setStart(nd, newText.length);
    range.collapse(true);
    sel.removeAllRanges();
    sel.addRange(range);
    nd.parentNode.focus()

}

用法:runRep("helo", "hello");,它将取代错误拼写的"你好"在当前节点中光标的左侧。你需要注意子字符串匹配。升级replace()以使用RegExp可能会允许更精确的定位(例如只有整个单词,忽略cAsE等),但这将按原样运行,RegExp升级不会更改代码的其余部分

未显示实际上是如何检测拼写错误的单词,这是另一个主题......

强制性小提琴:http://jsfiddle.net/p0dxdnub/