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

最佳答案

可以通过以下功能支持键入的核心替换节点功能:

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");,它将替换当前节点中光标左侧的拼写错误的“ hello”。您需要注意子字符串匹配。升级replace()以使用RegExp可能会允许更精确的定位(仅像整个单词一样,忽略cAsE等),但这将按原样工作并且RegExp升级不会更改其余代码。

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

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

关于javascript - 内联自动更正与contenteditable,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29067342/

10-12 06:51