2012-06-18 12 views
9

Wpadam w ten problem. Mam obszar tekstowy, który chcę używać sprawdzania pisowni tylko wtedy, gdy jest aktywny.Czy istnieje sposób na wyłączenie sprawdzania pisowni w obszarze tekstowym w przeglądarce Chrome przy użyciu JavaScript lub CSS?

<textarea id="editor"></textarea> 

$('#editor').focusin(function(){ 
    $(this).attr('spellcheck', true); 
}); 

$('#editor').focusout(function(){ 
    $(this).attr('spellcheck', false); 
}); 

W chromie, jeśli słowo jest źle napisane, pod nim znajduje się czerwona linia. Nawet jeśli wyłączyłem sprawdzanie pisowni, czerwona linia nadal istnieje. Jak usunąć ten znacznik?

+0

Brzmi jak pytanie dla SuperUser więcej niż Stack Overflow. – gdoron

+6

To jest problem programowania. Muszę to zrobić w kodzie –

+0

Odtworzenie obszaru tekstowego z tym samym tekstem, ale przed umieszczeniem go w DOM, najpierw wykonaj "fałsz". –

Odpowiedz

0

got to zorientowali się,

function bindEditorFocus() { 
    var $editor = $('#editor'); 
    $editor.focusin(function(){ 
     $(this).attr('spellcheck', true); 
     googleSpellingcheck(); // loop through all words to add marker 
    }); 

    $editorblur(function(){ 
     $editor.attr('spellcheck', false); 
     $editor.unbind(); // I need to unbind all function to avoid a loop 
     toogleSpellingcheck(); // loop through all words to remove marker 
     $editor.blur();  //get out of text area 
     bindEditorFocus(); // rebind all functions 
    }); 
} 


function toogleSpellingcheck(){ 
    //this will loop through all words 
    var $editor = $('#editor'); 
    var text = $editor.val();  
    for (var i = 0; i < text.length; i++) { 
     $editor.caret({start:i,end:i}); 
    } 
} 

toogleSpellingcheck Metoda pętli wszystkich słów, może być optymalizowane przez pętlę korycie słowy zamiast znaków, również ta potrzeba jQuery daszek wtyczki

to trochę brudny, ale działa, ktoś ma sugestie dotyczące ulepszenia proszę daj mi znać

3

Kiedyś to pytanie, aby uzyskać odpowiedź na swoje pytanie: Force spell check on a textarea in WebKit

HTML:

<textarea id="editor" spellcheck="true"></textarea> 

Javascript:

$('#editor').focusin(function(){ 
    $(this).attr('spellcheck', true); 
}); 

$('#editor').focusout(function() { 
    $(this).attr('spellcheck', false); 
    forceSpellcheck($(this)); 
}); 

    var canCheck = true; 
    function forceSpellcheck($textarea) { 
    if (canCheck) { 
    canCheck = false; 

    $textarea.focus(); 
    $textarea.attr('spellcheck', false); 
    var characterCount = $textarea.val().length; 

    var selection = window.getSelection(); 
    for (var i = 0; i < characterCount; i++) { 
     selection.modify("move", "backward", "character"); 
    } 

    // Remove focus from the element, since the word under 
    // the cursor won't have a misspelling marker. 
    $textarea.blur(); 
    } else { 
    canCheck = true; 
    } 
}​ 

Demo: http://jsfiddle.net/QgsRU/13/

+2

Pętla o stałej wartości 1000 nie wygląda tak dobrze. możesz uzyskać ilość słów za pomocą '.split (\ s)'. Napraw to i otrzymałem moje uprowadzenie. – gdoron

+0

Prawdę mówiąc, nie studiowałem tej metody. Po prostu skopiowałem go. Zajrzę w to. Dzięki gdoron! – Chango

+0

To nawet nie działa. To zawiesza moją przeglądarkę i nie mogę jej zamazać. –

Powiązane problemy