我有一个更新面板、一些输入字段、一个自定义验证器和一个提交按钮。 自定义验证器具有客户端和服务器验证功能。 这是示例代码。
<form id="form1" runat="server">
<div>
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
<asp:TextBox ID="TextBox3" runat="server"></asp:TextBox>
<asp:CustomValidator ID="vldcus" runat="server" OnServerValidate="vldcus_ServerValidate" ClientValidationFunction="vldcus_ClientValidate" ErrorMessage="CustomValidator"></asp:CustomValidator>
<asp:Button ID="Button1" runat="server" Text="Save" />
</ContentTemplate>
</asp:UpdatePanel>
</div>
</form>
当我单击提交按钮时,客户端验证功能会触发。
这是客户端验证函数中的代码
function vldcus_ClientValidate(sender, args) {
debugger;
alert("This is client Script");
args.IsValid = true;
}
在服务器端验证功能中,我注册了一个不执行的客户端脚本 block ,我不知道为什么。这是服务器端代码。
if (TextBox3.Text == string.Empty)
{
ScriptManager.RegisterClientScriptBlock(Page, typeof(Page), "customScript", "ValidatorValidate(document.getElementById('" + vldcus.ClientID +"'))", true);
args.IsValid = false;
}
为什么注册的脚本没有执行。
最佳答案
尝试使用此RegisterClientScriptBlock。当我自己尝试过并在后面的代码中显示警报时。
protected void vldcus_ServerValidate(object source, ServerValidateEventArgs args)
{
if (TextBox3.Text == string.Empty)
{
ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "customScript", "<script>alert('This is Server Alert');</script>", false);
}
}
请检查下图
关于javascript - ScriptManager.RegisterClientScriptBlock 不适用于 UpdatePanel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23889011/