2011-03-28 26 views
1

我有ASP.Net验证器的自定义控件。如何在回发之前进行验证?

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

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

当我按下按钮提交,我打电话确认框。如果我按取消 - 好吧。但如果我按OK,我需要进行验证。我怎样才能停止回传并执行调用?

+0

听起来像你需要使用JavaScript做客户端验证。 – 2011-03-28 21:17:15

+0

'javascript:'不会被事件处理程序使用。他们总是使用JavaScript。实际上,它只是起作用,因为它定义了一个标签。如果JavaScript没有标签,它将是一个语法错误。 – ThiefMaster 2011-03-28 21:23:24

回答

5

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

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

EDIT(回答评论):

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

如果在.js文件中定义了该函数,那么应该将validationGroup作为参数传递。

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

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

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

+0

在这种情况下,您应该将自定义控件的AddAttributes代码中的validationgroup传递给DoSmth方法。 – gbs 2011-03-28 23:38:59

+0

@gbs,为我的回答添加了解释 – Alex 2011-03-29 08:30:02

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; 
} 
相关问题