如何才能最好地将JQuery与ASP.NET客户端验证模型相结合?
我一般都避免使用ASP.NET验证模型,因为它对我所做的事情似乎总是有些过分.对于我现在正在处理的网站,我只是收集非关键用户数据,只需要一些基本的验证.我不希望消息出现在DOM或类似的东西中.无论如何,我总是觉得很难让它看起来正确.
但我现在需要实现一些更优雅的东西.我想在JQuery中利用的是聪明的搜索表达式,比如"告诉我是否至少选中了其中一个复选框".我是JQuery的新手,但我认为这是一行JQuery,在传统的ASP.NET模型中要复杂得多.
所以我想充分利用JQuery的能力,但不能完全取消ASP.NET的验证模型.
到目前为止,我最好的方法是这个(它几乎落后于ASP.NET):
$('#<%=btnJoinMailingList.ClientID %>').bind('click', function(event) {
if (...) {
alert("You must enter a name");
return false;
}
return true;
});
Run Code Online (Sandbox Code Playgroud)
这里有什么更好的方法?是否有任何推荐的JQuery插件?
PS.我不想使用MVC模型.我正在尝试创建一个非常'RAD'的网站,没有时间去研究那些有趣的新东西.
Kob*_*obi 12
ASP.NET有许多验证控件,其中之一就是CustomValidator.
您可以为它提供一个使用jQuery并返回true或false通过参数的自定义JavaScript函数.您可以使用此控件自动显示错误消息,或者只运行jQuery代码并手动处理显示.
ASPX:
<asp:CustomValidator ID="CustomValidator1" runat="server" Display="None"
ClientValidationFunction="checkTextareaLengths">
</asp:CustomValidator>
Run Code Online (Sandbox Code Playgroud)
JavaScript的:
function checkTextareaLengths(source, args){
args.IsValid = true;
$('textarea').each(function(){
if($(this).text().lenght > 400)
args.IsValid = false;
});
}
Run Code Online (Sandbox Code Playgroud)
ASP.NET webforms和jQuery的验证模型非常非常相似,恕我直言,因为它们都是客户端,而实现其中一个并不一定会破坏另一个.唯一真正的区别在于,在幕后,Page.Validate()如果您有一个未经验证的字段,ASP.NET验证器将导致该方法返回false.
您可以选择手动滚动自己的验证控件,然后导致相同的行为,但正如您自己所说,这可能是过度的.
jQuery也有自己的Validator插件,您可能需要查看它:http://docs.jquery.com/Plugins/Validation/Validator.
小智 5
ASP.NET验证程序是具有其他属性的跨度.使用jquery,您可以访问页面上的所有验证器或按照jquery支持的任何条件对其进行过滤.通过javascript调用ValidatorValidate函数强制验证.例如:
function validate_step(step_element) {
// find all validators on step_element and force validation
var validators = $(step_element).find("span[controltovalidate]");
var stepIsValid = true;
validators.each( function() {
ValidatorValidate(this); stepIsValid &= this.isvalid;
});
return stepIsValid;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12823 次 |
| 最近记录: |