2010-12-15 12 views
14

Kann die Rechtschreibprüfung in einem Textfeld über JavaScript deaktiviert werden?Kann die Rechtschreibprüfung in einem Textfeld über JavaScript deaktiviert werden?

Ich habe mir die HTML5 'spellcheck' attribute angesehen, und ich kann es für sich arbeiten lassen. Ich würde jedoch gerne dieses Attribut über JavaScript ändern können.

Nach der Dokumentation unter der oben angegebenen Link zu lesen, habe ich zusammen die folgenden Zeilen Code (Schnipsel aus einer größeren Datei, ich weiß, sie werden nicht auf ihre eigene Arbeit):

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

und

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

Aber es scheint nicht zu funktionieren. Habe ich einen Fehler gemacht oder die Dokumentation missverstanden? (Leider gibt die JavaScript-Konsole in Google Chrome keine Fehlermeldung aus.) Oder gibt es eine andere Möglichkeit, dies zu tun?

Antwort

20

Sie setzen es auf die String"true" (das ist ein true-Wert) und die String"false" (die auch ein true Wert ist).

Verwenden Sie Booleans, nicht Strings. Befreien Sie sich von den Zitaten.

+2

Verwenden Sie auch 'document.getElementById (" Editor ")' anstelle von 'document.querySelector (" #editor ")' –

+0

Aus der HTML5-Spezifikation für Rechtschreibprüfung [1] heißt es, dass * string * false geparst wird. Das Testen auf einem iPad auf iOS5 zeigt, dass weder 'element.spellcheck = false;' noch 'element.setAttribute ('spellcheck', 'false');' funktionieren. [1] http://www.whatwg.org/specs/web-apps/current-work/multipage/editing.html#spelling-and-grammar-checking – robocat

+0

Mein Kommentar oben ist falsch. Das Testen auf einem iPad mit iOS5 scheint jedoch zu zeigen, dass weder 'element.spellcheck = false; 'noch' element.spellcheck = 'false'; noch 'element.setAttribute (' spellcheck ',' false '); Versuchte Einstellung Autocomplete, Autokorrektur, Autokorrektur zu deaktivieren, und das scheint auch nicht zu funktionieren. Sehr frustrierend! – robocat

0

Angenommen, es ist ein grundlegendes Attribut.

Die folgende Beschreibung ist ohne Bibliothek arbeiten:

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

und mit jquery:

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

Die Verwendung von 'setAttribute()' ist normalerweise eine schlechte Idee (es ist im IE gebrochen und tut nicht das, was viele Leute denken). Es ist fast immer besser, stattdessen die entsprechende Eigenschaft zu verwenden. –

2

zumindest für mich, die String/Boolean Unterscheidung interpretiert hat keinen Einfluss auf HTML-Attribute in JavaScript-Javascript "false" == false.

Möglicherweise treten Probleme auf, weil die Rechtschreibprüfung nicht abgebrochen wird, weil Sie sie nicht zwingen, das Textfeld erneut auszuwerten. Um dies zu erzwingen, versuchen Sie diesen Code:

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

Der Fokus zwingt den Browser, um das Textfeld neu zu bewerten, in diesem Fall ohne Rechtschreibprüfung. Ich hoffe, das hilft!

Verwandte Themen