我可以以某种方式禁用HTML文本字段的拼写检查(如在Safari中所见)?
更新:根据评论者的建议(附加到如何禁用iPhone文本输入的拼写检查程序),使用它来处理所有桌面和移动浏览器。
<tag autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"/>
原来的答案:Javascript不能覆盖用户设置,所以除非你使用其他机制而不是文本字段,这是不可能的(或不应该)。
是的,使用由HTML5定义的spellcheck="false",例如:
spellcheck="false"
<textarea spellcheck="false"> ... </textarea>
一个IFrame将“触发”拼写检查器(如果它的内容可编辑设置为true)就像一个文本框,至少在Chrome中。
对于Grammarly,你可以使用:
<textarea data-gramm="false" />
下面的代码片段对所有textarea和input[type=text]元素禁用它:
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(); })();
当在<标签在当然会禁用该功能,它是方便的,能够切换该功能在页面加载后,根据需要打开和关闭。所以这里有一个非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.contentEditable
false
"false"
elem.spellcheck
elem.spellcheck = false;
或者在他的回答中提供的选项Mac:
elem.setAttribute("spellcheck", "false"); // Both string and boolean work here.