如何在回发之前进行验证?

时间:2011-03-28 21:13:57

标签: javascript asp.net validation postback

我使用ASP.Net验证器进行自定义控制。

writer.AddAttribute(HtmlTextWriterAttribute.Onclick, "javascript:return DoSmth();");

function DoSmth() {
var cBox = confirm("Are you sure?");
if (!cBox) {
    return false;
}
else {
//Invoke validation
}

当我按下提交按钮时,我打电话确认框。如果我按取消 - 好的。但如果按下确定,我需要进行验证。如何停止回发并进行篡改?

2 个答案:

答案 0 :(得分:5)

致电客户端Page_ClientValidate(validationGroup)。如果页面有效,则返回true

function DoSmth() {
    var cBox = confirm("Are you sure?");
    if (!cBox) {
        return false;
    }
    else {
        return Page_ClientValidate(validationGroup);
    }
}

编辑(评论的答案):

validationGroup这里是一个字符串变量,没有必要将它传递给DoSmth函数(老实说,答案应该是:它取决于)。

如果在.js文件中定义了此函数,则是,validationGroup应作为参数传递。

如果它是页面/控件的一部分,则更容易使用,例如服务器端构造在这里:

return Page_ClientValidate('<%= btnSubmit.ValidationGroup %>');

其中btnSubmit是一个导致验证的按钮,或者只使用字符串变量。

答案 1 :(得分:0)

我不确定您是否可以使用ASP.Net验证停止回发。来自MSDN:

  

“验证发生在页面之后   初始化(即在视图之后   状态和回发数据已经   已处理)但在任何变更或之前   单击事件处理程序被调用。 “

我使用jQuery Validation,然后使用与确认对话框相同的方法检查值。

function DoSmth() {

$('#form1').validate({
                rules: { field: "required" }
            });


var cBox = confirm("Are you shure?");
if (cBox && $('#form1').valid() ) {
    //form is valid 
}
else {
   return false;
}