2010-12-15 87 views
14

Est-il possible de désactiver l'orthographe dans une zone de texte via JavaScript?Est-il possible de désactiver l'orthographe dans une zone de texte via JavaScript?

J'ai regardé le HTML5 'spellcheck' attribute, et je peux l'obtenir pour fonctionner tout seul. Cependant, j'aimerais pouvoir changer cet attribut via JavaScript.

Après avoir lu la documentation fournie sur le lien ci-dessus, je mets ensemble les lignes de code suivantes (extraits d'un fichier plus volumineux, je sais qu'ils ne fonctionneront pas sur leur propre):

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

et

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

Mais cela ne semble pas fonctionner. Ai-je fait une erreur ou mal compris la documentation? (Inutilement, la console JavaScript de Google Chrome ne renvoie pas d'erreur.) Ou existe-t-il un autre moyen d'y parvenir?

Répondre

20

Vous définissez à la chaîne "true" (qui est une valeur true) et à la chaîne "false" (qui est aussi une valeur true).

Utiliser Booléens, pas Chaînes. Débarrassez-vous des citations.

+2

De même, utilisez 'document.getElementById (" editor ")' plutôt que 'document.querySelector (" # editor ")' –

+0

De la spécification HTML5 sur spellcheck [1], il est indiqué que * string * false est analysé. Le test sur un iPad sur iOS5 montre que ni 'element.spellcheck = false;' ni 'element.setAttribute ('spellcheck', 'false');' travail. [1] http://www.whatwg.org/specs/web-apps/current-work/multipage/editing.html#spelling-and-grammar-checking – robocat

+0

Mon commentaire ci-dessus est faux. Cependant, tester sur un iPad avec iOS5 semble montrer que ni 'element.spellcheck = false;' ni 'element.spellcheck = 'faux';' ni 'element.setAttribute ('spellcheck', 'faux');' travail. J'ai essayé de mettre la saisie semi-automatique, autocapitalize, autocorrect à désactiver, et cela ne semble pas fonctionner non plus. Très frustrant! – robocat

0

En supposant que c'est un attribut de base.

Ce qui suit devrait fonctionner sans bibliothèque:

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

et jquery:

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

Utiliser 'setAttribute()' est généralement une mauvaise idée (il est cassé dans IE et ne fait pas ce que beaucoup de gens pensent). Il est presque toujours préférable d'utiliser la propriété correspondante à la place. –

2

Au moins pour moi, la distinction String/Boolean n'attributs affecte pas HTML interprète JavaScript Javascript .

Vous pouvez rencontrer des problèmes avec l'orthographe non annulée car vous ne le forcez pas à réévaluer la zone de texte. Pour forcer, essayez ce code:

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

L'accent force le navigateur à réévaluer le textarea, dans ce cas, sans correction orthographique. J'espère que cela pourra aider!