禁用HTML文本字段的拼写检查

时间:2008-10-31 19:47:53

标签: html

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

7 个答案:

答案 0 :(得分:373)

更新:根据评论者的建议(额外归功于How can I disable the spell checker on text inputs on the iPhone),使用它来处理所有桌面和移动浏览器。

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

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

答案 1 :(得分:189)

是的,请使用HTML5定义的spellcheck="false",例如:

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

答案 2 :(得分:7)

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

答案 3 :(得分:6)

对于Grammarly,您可以使用:

<textarea data-gramm="false" />

答案 4 :(得分:2)

以下代码段对所有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();
})();

答案 5 :(得分:0)

虽然在中指定 spellcheck =“ false” 肯定会禁用该功能,但是在页面加载后能够根据需要打开和关闭该功能很方便。因此,这是通过编程方式设置 spellcheck 属性的非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' );

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

无需遍历文本区域的内容,我们只需剪切'n粘贴其中的内容,然后设置焦点。

blink 引擎(Chrome(ium),Edge等)中进行了测试

答案 6 :(得分:0)

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

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

elem.spellcheck = false;

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

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