【问题标题】:Is it possible to disable spellcheck in a textarea via JavaScript?是否可以通过 JavaScript 在文本区域中禁用拼写检查?
【发布时间】:2011-05-25 18:43:24
【问题描述】:

是否可以通过 JavaScript 在文本区域中禁用拼写检查?

我一直在查看HTML5 'spellcheck' attribute,我可以让它自己工作。不过,我希望能够通过 JavaScript 更改此属性。

阅读上述链接提供的文档后,我整理了以下代码行(来自较大文件的 sn-ps;我知道它们不会单独工作):

document.querySelector("#editor").spellcheck = "false";

document.querySelector("#editor").spellcheck = "true";

但它似乎不起作用。我是否犯了错误或误解了文档? (不幸的是,谷歌浏览器中的 JavaScript 控制台没有返回错误。)或者有没有其他方法可以做到这一点?

【问题讨论】:

    标签: javascript html spell-checking


    【解决方案1】:

    您将其设置为 String "true"(这是一个 true 值)和 String "false"(也是一个 @987654325 @值)。

    使用布尔值,而不是字符串。去掉引号。

    【讨论】:

    • 另外,使用document.getElementById("editor") 而不是document.querySelector("#editor")
    • 从关于拼写检查[1] 的 HTML5 规范中,它说 string false 已被解析。在 iOS5 上的 iPad 上进行的测试表明,element.spellcheck = false;element.setAttribute('spellcheck','false'); 都不起作用。 [1]whatwg.org/specs/web-apps/current-work/multipage/…
    • 我上面的评论是错误的。然而,在装有 iOS5 的 iPad 上进行的测试似乎表明 element.spellcheck = false;element.spellcheck = 'false';element.setAttribute('spellcheck','false'); 都不起作用。尝试将自动完成,自动大写,自动更正设置为关闭,但这似乎也不起作用。非常沮丧!
    • 事实证明,如果输入 already has focus (我试图设置onfocus 事件中的属性)。如果我在创建输入时这样做,element.setAttribute('autocomplete', 'OFF'); element.setAttribute('autocorrect', 'OFF'); 对我有用。
    • el.autocorrect = el.autocomplete = el.autocapitalize = el.spellcheck = false; 工作正常(除非输入已经有焦点,在这种情况下它不起作用!)。
    【解决方案2】:

    至少对我来说,String/Boolean 的区别不会影响 JavaScript 中的 HTML 属性——Javascript 解释 "false" == false

    您可能会遇到拼写检查未取消的问题,因为您没有强制它重新评估 textarea。要强制执行此操作,请尝试以下代码:

    var editor = document.getElementById("editor");
    editor.spellcheck = false;
    editor.focus();
    editor.blur();
    

    焦点迫使浏览器重新评估文本区域,在这种情况下没有拼写检查。希望对您有所帮助!

    【讨论】:

      【解决方案3】:

      假设它是一个基本属性。

      以下应该在没有库的情况下工作:

      document.getElementById('editor').setAttribute('spellcheck', 'true'); // or false
      

      并使用 jquery:

      $('#editor').attr('spellcheck', 'true'); // or false
      

      【讨论】:

      • 使用setAttribute() 通常是个坏主意(它在 IE 中被破坏了,并且不像很多人认为的那样)。使用相应的属性几乎总是更好。
      猜你喜欢
      • 1970-01-01
      • 2011-08-08
      • 2023-03-23
      • 2013-12-15
      • 2016-06-30
      • 2018-03-22
      • 1970-01-01
      • 1970-01-01
      • 2010-09-20
      相关资源
      最近更新 更多