ASP.NET验证控件和Javascript确认框
我有一个使用.NET服务器端输入验证控件的页面。此页面还有一个javascript确认框,在提交表单时触发。当前,当选择Submit按钮时,会出现javascript确认框,一旦确认,就会触发ASP.NET服务器端验证控件。我想在显示javascript确认框之前启动服务器端验证控件 如何做到这一点?我在下面附上了我当前代码的一个示例 sample.aspxASP.NET验证控件和Javascript确认框,.net,asp.net,javascript,vb.net,winforms,.net,Asp.net,Javascript,Vb.net,Winforms,我有一个使用.NET服务器端输入验证控件的页面。此页面还有一个javascript确认框,在提交表单时触发。当前,当选择Submit按钮时,会出现javascript确认框,一旦确认,就会触发ASP.NET服务器端验证控件。我想在显示javascript确认框之前启动服务器端验证控件 如何做到这一点?我在下面附上了我当前代码的一个示例 sample.aspx <asp:textbox id=foo runat=server /> <asp:requiredfieldvalida
<asp:textbox id=foo runat=server />
<asp:requiredfieldvalidator id=val runat=server controltovalidate=foo />
<asp:button id=submit runat=server onClientClick=return confirm('Confirm this submission?') />
谢谢您的帮助。您不能将EnableClientScript属性用于validator控件,从而允许您在提交时在客户端执行验证。然后将触发验证 问题是返回确认在验证程序的javascript之前触发。这一切都与生命周期有关 如果您确实希望有这样的行为,那么您需要做的是将所有验证器更改为自定义验证器,为自定义验证器推出自己的JS验证例程,然后在验证例程结束时调用confirm作为最终调用
如果可以更改触发顺序,如果您将返回确认编码的JS添加到HIJAX方法中的按钮,在该方法中,页面完全加载到浏览器后,它被分配给onClick事件——但我从未将该方法用于该功能,所以不要在这里引用我的话。验证程序是由表单上的onsubmit处理程序启动的
如果覆盖form.onsubmit,您将失去验证程序启动,尽管您可以手动提供所需的JS。使用ASP.NET控件工具包的validator Callout控件如何?发件人: ValidatorCallout是一个ASP.NET AJAX扩展程序,它增强了现有ASP.NET验证程序的功能。要使用此控件,请像平常一样添加输入字段和验证程序控件。然后添加ValidatorCallout并将其TargetControlID属性设置为引用validator控件
我没有使用过这个,但在我看来,它可以为您提供所需的客户端验证。这似乎是一个非常常见的问题 解决办法: 首先验证页面,然后调用
确认
,如图和所示。
这确实有两次调用验证的缺点—一次在代码中调用,一次在提交onclick
中的生成代码中调用
如何使其正常工作,即首先验证页面(并且仅验证一次),然后显示确认
框,我还不知道
编辑:这是一个有用的建议:
ASP.NET在幕后做什么
如果存在验证控件,则为“添加”
为的自动生成的onClick事件
每个按钮。此OnClick事件将
替换自定义OnClick事件。所以
克服这一点,我做了以下工作:
<asp:Button ID="btnSubmit" runat="server" Text="Submit" OnClientClick="if (Page_ClientValidate()){ return confirm('Do you want to submit this page?')}" CausesValidation="false" />
您应该在客户端本身上验证页面
function validate()
{
Page_ClientValidate();
if (Page_IsValid)
// do your processing here
return Page_IsValid;
}
可以在按钮的“onClientClick”事件中调用此方法,在代码隐藏中,您可以在页面有效时调用此方法,并在客户端验证成功时执行处理
因此,在按钮的单击事件中,您可以执行-
protected void SubmitButton_Click(object sender, EventArgs e)
{
if (!this.isValid)
return;
// do the processing here
}
验证检查后代码隐藏中的确认框
//---javascript-----
函数ConfirmSubmit()
{
Page_ClientValidate();
如果(第页有效){
返回确认(“您确定吗?”);
}
返回页面无效;
}
+1但您的标题令人困惑。确认框不在代码隐藏中。
protected void SubmitButton_Click(object sender, EventArgs e)
{
if (!this.isValid)
return;
// do the processing here
}
<asp:Button ID="btnSave" runat="server" OnClientClick="javascript:return ConfirmSubmit()" OnClick="btnSave_Click" Text="Save" />
//---javascript -----
function ConfirmSubmit()
{
Page_ClientValidate();
if(Page_IsValid) {
return confirm('Are you sure?');
}
return Page_IsValid;
}