我希望客户端在回发之前验证表单,所以我使用onclientclick事件来验证表单,如果它有效,请执行一些服务器端的事情。
这里是我的代码:
<head runat="server">
<script type="text/javascript" id="Script1">
function performCheck() {
return $("TextBox1").val() == "";
}
</script>
<title></title>
</head>
<body>
<form id="form1" runat="server" >
<telerik:RadScriptManager ID="RadScriptManager1" runat="server">
</telerik:RadScriptManager>
<div>
<asp:TextBox ID="TextBox1" runat="server" CausesValidation="true" ValidationGroup="thisGpo"></asp:TextBox>
<asp:RequiredFieldValidator EnableClientScript="true" ID="RequiredFieldValidator1" ValidationGroup="thisGpo" runat="server" ControlToValidate="TextBox1" ErrorMessage="RequiredFieldValidator"></asp:RequiredFieldValidator>
<asp:Button OnClientClick="performCheck()" ID="Button1" runat="server" Text="Button" ValidationGroup="thisGpo" CausesValidation="true" /> </div>
</form>
</body>
问题是,如果我使用telerik控件,他们会添加标签
<telerik:RadScriptManager ID="RadScriptManager1" runat="server">
</telerik:RadScriptManager>
而这个地狱形式的地狱导致回发覆盖我的代码,所以这很令人沮丧。
我的老板强迫我们使用Telerik,因为他们有这个花哨的数字文本框而且他正在付钱。
试图联系TELERIK,但他们提到他们无法给予我们支持,因为我们的版本已经过期。
答案 0 :(得分:1)
由于您需要客户端验证,因此您可以添加&#39; return false;&#39;到OnClientClick
<asp:Button OnClientClick="performCheck(); return false;" ID="Button1" runat="server" Text="Button" ValidationGroup="thisGpo" CausesValidation="true" />
然后让服务器端调用我建议创建一个隐藏按钮来调用服务器端方法或使用ajax。
使用隐藏按钮:
<asp:Button runat="server" ID="btnDoTheThing" style="display: none;" OnClick="btnDoThething_Click"></asp:Button>
服务器端代码:
protected void btnDoTheThing_Click(object sender, EventArgs e)
{
// Do The Thing
}
所以一旦javascript验证完成并且有效,那么使用jquery点击按钮,调用如
$("#btnDoTheThing").click();
或者,一旦验证有效,您就可以使用Ajax来调用服务器端代码。
答案 1 :(得分:0)
经验丰富的行为的原因是Unobtrusive验证,它是针对.Net 4.5版本的项目构建的默认验证。
因此,当您创建.NET 4.5 Telerik Web站点时,默认Web表单具有RadScriptManager。这意味着与Telerik控件一起使用的jQuery版本在ScriptManager中注册为jquery,因此您需要指定jQuery和验证脚本的注册顺序。不显眼的验证的验证脚本(WebForms.js和WebUIValidation.js)在这种情况下不可用,因此您还需要在站点上安装它们。 以下步骤设置不显眼的验证: 打开工具&gt;库包管理器&gt;程序包管理器控制台并运行以下命令,以使用ScriptManager为Web窗体安装Microsoft Ajax优化包:
PM&GT;安装包Microsoft.AspNet.ScriptManager.WebForms -Version xxx(您可以在其下载页面中检查此NuGet包的当前版本)。这将在网站上安装脚本文件WebForms.js和WebUIValidation.js。
配置RadScriptManager以指定在验证脚本之前注册jQuery。