"Serial" Spell checking?

5 posts, 1 answers
  1. Scott
    Scott avatar
    4 posts
    Member since:
    Jan 2009

    Posted 30 Jan 2009 Link to this post

    I am new to the Telerik controls and am trying to do something specific using Spell. I want to have multiple controls on a page that are checked for spelling errors (which is easy enough), but I would like for them to be checked individually and in sequence. In other words, check Control 1, do all fixes, then move on to Control 2, etc. without displaying the results from one control in another's dialog box.

    I have been trying to use code like the following to achieve this:

    var spell = $find("RadSpell1");   
    for (var i=0; i < 2; i++) 
        spell.spellCheck(elements[i]); 
    where elements contains the array of controls, or

    spell.spellCheck(elementOne); 
    spell.spellCheck(elementTwo); 

    Each time, the spell check seems to somehow ignore the first control and focus on the second control. I can check both controls as normal or each one individually (without the other), so they appear to be set up correctly. I just cannot check one and then the other. Is this even possible? Am I missing something obvious here?

    Thanks for any insight,
    Scott


  2. Tervel
    Admin
    Tervel avatar
    1337 posts

    Posted 02 Feb 2009 Link to this post

    Hi Scott,

    The problem comes from the fact that javascript code cannot block the browser execution thread.
    Hence, after the first spellCheck call, the second call is immediately execute - scrapping any previous request.

    To implement your scenario you can, for example, hook to RadSpell client-side event spell check for the next control, etc.

    More information on client-side events can be found in  the following online demo:
    http://demos.telerik.com/aspnet-ajax/spell/examples/clientsideevents/defaultcs.aspx

    All the best,
    Tervel
    the Telerik team

    Check out Telerik Trainer, the state of the art learning tool for Telerik products.
  3. UI for ASP.NET Ajax is Ready for VS 2017
  4. Scott
    Scott avatar
    4 posts
    Member since:
    Jan 2009

    Posted 13 Feb 2009 Link to this post

    Thank you for your reply. I have looked into trying what you suggested, but I am still having problems. Do you have any further guidance, pseudo-code, or actual code examples?

    Here is what I have tried (partial code listing follows). I created an array of the control names that I wanted checked. My idea is to iterate through the array and explicitly tell RadSpell to check each element. With the code below, this is what I see:

    1. Put values into screen elements and click Spell Check button
    2. Spell check starts for first screen element in array and works as expected.
    3. Click Change to accept suggestion, and spellCheckFinished() launches as expected.
    4. Script gets set to check the next field in the array.
    5. Starts spell check (i.e., calls spellCheck()) for second field as expected.
    6. Instead of populating the spell check dialog with the second field, the results of the first check remain, and I see the default "The Spell Check is complete!" message.

    It seems like the spell checker is locked into its completed state and will not come out. I have tried to manually call SetSpellChecked(), but that doesn't do anything (literally, the JavaScript appears to stop running - is it deprecated or do I need to install something?)

    Thanks for any ideas on this,
    Scott

    ASP code:
    <telerik:RadSpell ID="RadSpell1" runat="Server" OnClientCheckFinished="spellCheckFinished" 
            WordIgnoreOptions="WordsWithNumbers" ButtonType="None" 
            IsClientID="True" SupportedLanguages="en-US,English"/>   
    <br /><br />  
    <input type="button" onclick="spellCheck()" value="Spell Check" /> 
     

    Javascript:
    function spellCheck() 
        alert("starting spell check for:"+listArray[fieldCounter]); 
        var spell = $find("RadSpell1"); 
     
        // prepare field 
        var element = new Telerik.Web.UI.Spell.HtmlElementTextSource($get(listArray[fieldCounter])); 
             
        spell.spellCheck(element); 
     
    function spellCheckFinished(sender, args) 
        alert("check finished"); 
             
        // If array is not done, increment. Otherwise, reset counter 
        if ( fieldCounter < (listArray.length - 1) ) 
        { 
            fieldCounter++; 
            alert("check the next field"); 
            args.SuppressCompleteMessage = true
                 
            spellCheck(); 
        } 
        else 
        { 
            alert("done with all fields"); 
            fieldCounter = 0; 
        } 
     

  5. Answer
    Tervel
    Admin
    Tervel avatar
    1337 posts

    Posted 16 Feb 2009 Link to this post

    Hello Scott,

    I played with the code provided from you. Attached is a tweaked version with a couple of minor changes here and there.

    Best regards,
    Tervel
    the Telerik team

    Instantly find answers to your questions on the new Telerik Support Portal.
    Check out the tips for optimizing your support resource searches.
  6. Scott
    Scott avatar
    4 posts
    Member since:
    Jan 2009

    Posted 17 Feb 2009 Link to this post

    This appears to work. Thanks for your efforts in getting me on the right path.

    Scott
Back to Top
UI for ASP.NET Ajax is Ready for VS 2017