我使用ASP.Net验证器进行自定义控制。
writer.AddAttribute(HtmlTextWriterAttribute.Onclick, "javascript:return DoSmth();");
function DoSmth() {
var cBox = confirm("Are you sure?");
if (!cBox) {
return false;
}
else {
//Invoke validation
}
当我按下提交按钮时,我打电话确认框。如果我按取消 - 好的。但如果按下确定,我需要进行验证。如何停止回发并进行篡改?
答案 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;
}