如何强制javascript在所需的验证控件之后运行?
我有一个不应该为空的文本框,因此我在它旁边放置了一个必需的验证控件。我还有一个javascript确认框,询问用户是否确定提交信息 问题是确认先出现,然后验证才开始。我想反过来说。我希望先进行验证。如果没有更多错误,则询问用户是否确定提交信息 编辑 这就是标记如何强制javascript在所需的验证控件之后运行?,javascript,asp.net,Javascript,Asp.net,我有一个不应该为空的文本框,因此我在它旁边放置了一个必需的验证控件。我还有一个javascript确认框,询问用户是否确定提交信息 问题是确认先出现,然后验证才开始。我想反过来说。我希望先进行验证。如果没有更多错误,则询问用户是否确定提交信息 编辑 这就是标记 <asp:LinkButton ID="_lnkAddUpdate" runat="server" CausesValidation="True" OnClientClick = "return ConfirmAddEdit(thi
<asp:LinkButton ID="_lnkAddUpdate" runat="server" CausesValidation="True" OnClientClick = "return ConfirmAddEdit(this.id)"
CommandName="Update"></asp:LinkButton>
<asp:TextBox ID="_tbLocationName" runat="server" Text= '<%# Eval("LocationName") %>'/>
<asp:RequiredFieldValidator ID="reqLocationName" runat="server" ErrorMessage="Location name cannot be empty string." Text = "*" ControlToValidate = "_tbLocationName" />
谢谢您的帮助。如果没有看到代码,就无法确定问题出在哪里,但我猜您遇到了两个问题之一 首先要检查的是,验证代码在确认代码之前
validate();
confirm();
很简单。第二个问题,我猜您的实际问题是您使用的是远程验证,因此您希望的不是上面的解决方案,而是将确认代码作为对验证代码的回调。如何实现这一点取决于如何设置验证请求。张贴代码,我们可以帮助你 我通常的做法是使用以下javascript
var cont = true;
if (typeof (Page_ClientValidate) === "function") {
cont = Page_ClientValidate();
}
if (cont) {
cont = window.confirm("are you sure?");
}
return cont;
这将检查ASP.NET函数是否可用,如果可用,请运行它。。。如果有效,则会触发确认。最终结果将发送回单击处理程序,以确定是否继续
更新 再解释一下: 设置
OnClientClick
属性时,设置的javascript总是首先运行。。。因此,如果页面中有任何validator
控件,它们将只在javascript之后运行。这显然不是你想要的
我的解决方案是在javascript之后调用与浏览器调用完全相同的函数,但在javascript之前调用。次要的缺点是验证将执行两次(一次由您直接执行,然后在函数运行后再次执行)
您与我们共享的代码越多,帮助就越容易:)我的问题是,是否需要将其放入javascript函数中。如您所见,验证不是由我编写的函数完成的,而是由require validation控件完成的。@Richard,是的,您可以将其放在函数中。因此,您将调用函数,而不是在
onclick
中调用窗口.confirm
。我会更新我的答案,更全面地解释
var cont = true;
if (typeof (Page_ClientValidate) === "function") {
cont = Page_ClientValidate();
}
if (cont) {
cont = window.confirm("are you sure?");
}
return cont;
function ConfirmActive(id) {
var cont = true;
if (typeof (Page_ClientValidate) === "function") {
cont = Page_ClientValidate();
}
if (cont) {
var action = document.getElementById(id).innerHTML;
cont = confirm("Are you sure you want to " + action + " this location?");
}
return cont
}