306

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

4

7 回答 7

442

更新:根据评论者的建议(如何在 iPhone 上禁用文本输入的拼写检查器的附加功劳),使用它来处理所有桌面和移动浏览器。

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

原始答案:Javascript 不能覆盖用户设置,因此除非您使用文本字段以外的其他机制,否则这是不可能的(或不应该是)。

于 2008-10-31T19:49:24.553 回答
218

是的,使用HTML5spellcheck="false"定义的,例如:

<textarea spellcheck="false">
    ...
</textarea>
于 2009-08-07T15:53:34.293 回答
15

对于语法,您可以使用:

<textarea data-gramm="false" />
于 2018-05-11T23:11:30.020 回答
8

至少在 Chrome 中,IFrame 将“触发”拼写检查器(如果它的 content-editable 设置为 true),就像文本字段一样。

于 2010-12-06T22:59:19.200 回答
4

以下代码片段对所有textareainput[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();
})();
于 2018-10-27T12:40:37.823 回答
0

虽然在 < tag > 中指定spellcheck="false"肯定会禁用该功能,但在页面加载后能够根据需要打开和关闭该功能很方便。因此,这是一种以编程方式设置拼写检查属性的非 jQuery 方法:

<textarea id="my-ta" spellcheck="whatever">abcd dcba</textarea>

function setSpellCheck( mode ) {
    var myTextArea = document.getElementById( "my-ta" )
        , myTextAreaValue = myTextArea.value
    ;
    myTextArea.value = '';
    myTextArea.setAttribute( "spellcheck", String( mode ) );
    myTextArea.value = myTextAreaValue;
    myTextArea.focus();
}

setSpellCheck( true );
setSpellCheck( 'false' );

函数参数可以是布尔值或字符串。

无需遍历 textarea 内容,我们只需剪切粘贴那里的内容,然后设置焦点。

闪烁引擎(Chrome(ium)、Edge 等)中测试

于 2020-11-12T18:58:27.513 回答
0

如果您已动态创建 HTML 元素,您将希望通过 JS 禁用该属性。然而有一个小陷阱:

设置时elem.contentEditable,您可以使用 booleanfalse或 string "false"。但是当你设置时elem.spellcheck,你只能使用布尔值 - 出于某种原因。因此,您的选择是:

elem.spellcheck = false;

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

elem.setAttribute("spellcheck", "false"); // Both string and boolean work here. 
于 2021-02-08T12:28:24.140 回答