Das Ereignis wird nicht ausgelöst, wenn mit Hilfe von Javascript zu Postback
-
22-08-2019 - |
Frage
Ich versuche, Telerik RadSpell zu verwenden, um einen Text zu Rechtschreibprüfung, wenn der Benutzer es einreicht.
Der Weg, dies soll ist arbeiten, indem das Postback zu stoppen, die Auslösung der Rechtschreibprüfung durch Javascript, dann im spellcheckfinished Ereignis manuell die reale Postback zu starten. Das Problem ist, dass im letzten Schritt des Clicked Ereignis nicht für die Schaltfläche feuert und der serverseitige Event-Handler wird nie aufgerufen.
Hier ist der relevante ASPX Code:
<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>
Jede Idee, warum btnSubmit_Click nicht immer genannt und wie kann ich es beheben?
Lösung
Versuchen Sie, Ihren Postback-Skript als zu injizieren:
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);
}
Andere Tipps
Die letzten wie von doSpellCheckStuff () kehrt immer falsch, was den OnClick-Ereignis-Listener stoppt aus ausgeführt wird.