JavaScript를 Postback에 사용할 때 이벤트가 발사되지 않습니다
-
22-08-2019 - |
문제
사용자가 제출할 때 Telerik의 Radspell을 사용하여 일부 텍스트를 확인하려고합니다.
이것이 작동하는 방식은 Postback을 멈추고 JavaScript를 통해 맞춤법 검사를 트리거 한 다음 Real Postback을 수동으로 시작하는 SportCheckFinished 이벤트에서입니다. 문제는 마지막 단계에서 클릭 된 이벤트가 버튼에 대해 발사되지 않고 서버 측 이벤트 핸들러가 호출되지 않는다는 것입니다.
관련 .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이 호출되지 않았고 어떻게 고칠 수 있습니까?
해결책
Postback 스크립트를 다음과 같이 주입하십시오.
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);
}
다른 팁
DOSPELLCHECKSTUFF ()의 마지막과 같은 것은 항상 False를 반환하여 OnClick 이벤트 리스너가 실행되는 것을 막는 것을 멈추고 있습니다.
제휴하지 않습니다 StackOverflow