Событие не запускается при использовании JavaScript для обратной передачи - PullRequest
0 голосов
/ 25 марта 2009

Я пытаюсь использовать RadSpell Telerik для проверки орфографии некоторого текста, когда пользователь отправляет его.

Способ, которым это должно работать, - остановить обратную передачу, вызвать проверку орфографии через javascript, а затем в событии проверки орфографии вручную запустить реальную обратную передачу. Проблема в том, что на последнем шаге событие Clicked не запускается для кнопки, а обработчик событий на стороне сервера никогда не вызывается.

Вот соответствующий код .aspx:

<script type="text/javascript" language="javascript">

    var spellCheckFinished = false;
    var btnClicked;

    function doSpellCheckStuff(btnTrigger) 
    {          
        btnClicked = btnTrigger;
        var spell = GetRadSpell('<%= rsMessage.ClientID %>');
     //   spell.add_clientCheckFinished(checkFinished);
        spell.startSpellCheck();
        return false;
    }

    function checkFinished(sender, args)
    {   
        args.SuppressCompleteMessage = true;
        setTimeout('MySubmit();', 100);
    }

    function MySubmit()
    {
        WebForm_DoPostBackWithOptions(
            new WebForm_PostBackOptions(btnClicked.id, '', true, '', '', false, true)
        );
    }
</script>

<tr>
            <td>
                <asp:Button ID="btnSubmit" OnClientClick="return doSpellCheckStuff(this);" Text="Submit" 
                            OnClick="btnSubmit_Click" runat="server" />
            </td>
            <telerik:RadSpell   ID="rsMessage" ControlToCheck="txtMessage" ButtonType="None" 
                                UseClassicDialogs="true" FragmentIgnoreOptions="All" 
                                OnClientCheckFinished="checkFinished" runat="server" />
        </tr>

Есть идеи, почему не вызывается btnSubmit_Click и как я могу это исправить?

Ответы [ 2 ]

3 голосов
/ 25 марта 2009

Попробуйте ввести скрипт обратной передачи как:

string script = @"function MySubmit(){" +
                  this.Page.ClientScript.GetPostBackEventReference(myButton, string.Empty);
                  "}";

if (!this.Page.ClientScript.IsClientScriptBlockRegistered("myPostBackScript"))
{
    this.Page.ClientScript.RegisterClientScriptBlock(typeof(MyPage), "myPostBackScript", script, true);
}
2 голосов
/ 25 марта 2009

Последний тип doSpellCheckStuff () всегда возвращает false, что останавливает работу прослушивателя событий OnClick.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...