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

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

112254 次浏览

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

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

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

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

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

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

对于Grammarly,你可以使用:

<textarea data-gramm="false" />

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

当在<标签在当然会禁用该功能,它是方便的,能够切换该功能在页面加载后,根据需要打开和关闭。所以这里有一个非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' );

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

不需要循环文本区域的内容,我们只是剪切和粘贴那里的内容,然后设置焦点。

眨眼引擎中测试(Chrome(ium), Edge等)

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

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

elem.spellcheck = false;

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

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