我可以以某种方式禁用HTML文本字段的拼写检查(如在Safari中所见)?


更新:正如一位评论者所建议的(额外归功于如何禁用iPhone文本输入的拼写检查器),使用此功能来处理所有桌面和移动浏览器。

<tag autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"/>

原来的答案:Javascript不能覆盖用户设置,所以除非你使用其他机制而不是文本字段,这是不可能的(或不应该)。


是的,使用拼写检查="false",就像HTML5定义的那样,例如:

<textarea spellcheck="false">
    ...
</textarea>

一个IFrame将“触发”拼写检查器(如果它的内容可编辑设置为true)就像一个文本框,至少在Chrome中。


对于Grammarly,你可以使用:

<textarea data-gramm="false" />

下面的代码片段对所有textarea和input[type=text]元素禁用它:

(function () {
    function disableSpellCheck() {
        let selector = 'input[type=text], textarea';
        let textFields = document.querySelectorAll(selector);

        textFields.forEach(
            function (field, _currentIndex, _listObj) {
                field.spellcheck = false;
            }
        );
    }

    disableSpellCheck();
})();

如果您动态地创建了HTML元素,则需要通过JS禁用该属性。但是这里有一个小陷阱:

设置elem时。你可以使用布尔值false或者字符串"false"。但是当你设置elem。拼写检查,你只能使用布尔-出于某种原因。你的选择如下:

elem.spellcheck = false;

或者是Mac在回答中提供的选项:

elem.setAttribute("spellcheck", "false"); // Both string and boolean work here.