如何强制javascript在所需的验证控件之后运行?

如何强制javascript在所需的验证控件之后运行?,javascript,asp.net,Javascript,Asp.net,我有一个不应该为空的文本框,因此我在它旁边放置了一个必需的验证控件。我还有一个javascript确认框,询问用户是否确定提交信息 问题是确认先出现,然后验证才开始。我想反过来说。我希望先进行验证。如果没有更多错误,则询问用户是否确定提交信息 编辑 这就是标记 <asp:LinkButton ID="_lnkAddUpdate" runat="server" CausesValidation="True" OnClientClick = "return ConfirmAddEdit(thi

我有一个不应该为空的文本框,因此我在它旁边放置了一个必需的验证控件。我还有一个javascript确认框,询问用户是否确定提交信息

问题是确认先出现,然后验证才开始。我想反过来说。我希望先进行验证。如果没有更多错误,则询问用户是否确定提交信息

编辑 这就是标记

<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
}