我有一个不应为空的文本框,因此我在其旁边放置了一个必需的验证控件。我还有一个 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;
}
}
感谢您的帮助。
答案 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
}