我可以在 HTML 文本框(例如 Safari 中)中禁用拼写检查吗?
更新:根据评论者的建议(额外感谢如何在iPhone上禁用文本输入框中的拼写检查器),使用以下方法以处理所有桌面和移动浏览器。
<tag autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"/>
原始回答:Javascript 无法覆盖用户设置,因此除非您使用文本字段之外的其他机制,否则这不可能(或不应该)发生。
可以使用 spellcheck="false"
,例如 HTML5 中定义的方式:
<textarea spellcheck="false">
...
</textarea>
spellCheck
似乎可以解决它。可能只是react-dom的问题。 - Shanimal<textarea data-gramm="false" />
在Chrome浏览器中,如果IFrame的content-editable属性设置为true,则IFrame会像文本框一样“触发”拼写检查。
以下代码片段禁用了所有 textarea
和 input[type=text]
元素的拼写检查功能:
document.querySelectorAll('input[type=text], textarea').forEach(field => field.spellcheck = false);
document.querySelectorAll('input[type=text], textarea').forEach(field => field.spellCheck = false)
- s123虽然在 < tag > 中指定 spellcheck="false" 可以禁用该功能,但在页面加载后需要随时切换该功能非常方便。因此,以下是一种非 jQuery 的以编程方式设置 spellcheck 属性的方法:
:
<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' );
函数参数可以是布尔值或字符串。
不需要循环遍历文本区域的内容,我们只需复制粘贴其中的内容,然后设置焦点。
在 blink 引擎中测试通过(Chrome(ium),Edge 等)。
myTextArea.spellCheck = mode
而不是 setAttribute,它会自动转换为字符串。 - s123elem.spellcheck = false;
或者选择Mac在他的答案中提供的选项:
elem.setAttribute("spellcheck", "false"); // Both string and boolean work here.
Mobile Safari
),可以使用(autocorrect="off"
)来禁用文本输入框的拼写检查,而(spellcheck=
)则无效。以上是解决https://dev59.com/tnA75IYBdhLWcg3wOGLS的正确答案。 - Chris S