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

时间:2012-11-13 17:59:17

标签: javascript asp.net

我有一个不应为空的文本框,因此我在其旁边放置了一个必需的验证控件。我还有一个 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" />

这是javascript

function ConfirmActive(id) {
    var action = document.getElementById(id).innerHTML;
    var r = confirm("Are you sure you want to " + action + " this location?");
    if (r == false) {
        return false;
    }
}

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

没有看到代码就无法确定问题是什么,但我猜你有两个问题之一。

要检查的第一件事是您的验证码在您的确认码之前

validate();
confirm();

够容易。第二个,我猜你的实际问题是你正在使用远程验证,所以你想要的不是上面的解决方案,而是让你的确认代码成为验证码的回调。如何执行此操作取决于您如何设置验证请求。发布该代码,我们可以帮助您。

答案 1 :(得分:1)

我通常这样做的方法是使用以下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控件,则只会在之后运行 / strong>你的javascript。这显然不是你想要的。

我的解决方案的作用是调用javascript后浏览器调用的完全相同的函数,但之前。一个小的缺点是验证将被执行两次(一个直接由你执行,然后在你的函数运行后再次执行)。

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
}