Javascript表单验证框架:请求审核

Viv*_*ath 14 javascript validation client-side-validation

我不确定我是否可以提出这样的问题,但在Meta Stackoverflow上看到这个后,看起来这种问题还可以.那么,关于我的问题:

几个月前,我在Javascript中编写了一个验证框架.我知道已存在jQuery Validation之类的验证框架,但我想采用不同的验证方法.当前的方法涉及编写Javascript代码以对表单元素执行验证.通过查看表单源代码,不会立即明确在每个元素上进行验证.在某种程度上,这可以通过使用指定不同类型的验证的CSS类来解决.但我觉得即使这样也是有限的,因为你无法轻松定制验证的行为(错误消息等).我想使用JSR-303 Bean ValidationHibernate Validator在Java中执行基于注释的验证.

由于HTML5允许您向元素添加自定义属性,我认为我可以利用它来"注释"表单元素以进行验证.所以,基本上,我想出了这个:

<input id = "myInput"
       name = "myInput"
       type = "text"
       class = "regula-validation"
       data-constraints = '@NotEmpty @IsNumeric @Between(min=1, max=5)' />
Run Code Online (Sandbox Code Playgroud)

考虑到这个基本思想,我创建了一个Javascript框架:

  • 检查具有约束定义的元素的DOM,并将这些约束绑定到元素
  • 允许创建自定义约束
  • 允许以编程方式绑定约束
  • 验证绑定约束

此外,该框架还具有以下功能:

  • 验证组,类似于JSR-303中指定的验证组
  • 错误消息的插值

一旦我创建了我的框架,我就试图获得反馈并对其进行审核,但我不知道该去哪里获得反馈和评论.我写了一些关于它的博客文章并将其发布到Digg和Reddit(编程部分),但没有太多运气.一些人似乎很感兴趣,但我没有得到更多.

Recently, at my workplace we've been modernizing a legacy codebase (JSP and servlets) and moving it into Spring MVC. When the conversation of validation came up, I pitched my framework to my senior architect. I did a little integration and proof of concept and they seemed interested and gave me the go-ahead to add it to the project. Till now, I only had my own humble opinion that this would be a helpful way to do validation, so this gave me some confidence that my idea and framework might have some merit. However, I still needed some more participation and framework. After I figured out that Stackoverflow does allow these kinds of questions, I decided to post it on here to get some constructive criticism, comments, and feedback.

所以我没有任何延迟,我想介绍Regula.我提供的链接转到GitHub上的wiki,其中包含该框架的所有文档.您可以从此处下载最新版本(v1.1.0).

期待您的评论.

一些不直接相关的额外信息

我曾经想过将我的框架与Spring集成,即将bean上的验证注释转换为客户端验证.最近我能够使这个工作,即使有验证组(虽然目前没有支持客户端组之间的继承关系).这样,您只需使用验证约束来注释字段属性,并自动生成客户端验证代码.但是,我是一个春天的新手,所以我的方法可能不那么干净.我想得到一些反馈,所以如果有人有兴趣请告诉我.理想情况下(我希望我不会过于自命不凡)我想联系春天的人,看看他们是否对此感兴趣.

Mat*_*ott 7

我已经非常喜欢它,它保持我的html清洁,并且构建自定义验证器的能力很棒.我添加的一件事是绑定验证和提交函数的简写,并将其包装为jQuery插件:

if (jQuery) {
    (function($)
    {
        $.regula = function(formId, callback) 
        {
            regula.bind();

            $("#" + formId).submit(function() 
            {
                var validationResults = regula.validate();

                if (validationResults.length > 0)
                {
                    if (callback)
                        callback(validationResults);

                    return false;
                }

                return true;
            });
        };
    })(jQuery);
}
Run Code Online (Sandbox Code Playgroud)

事实上,我刚刚写了一篇关于它的博客,因为我对它的清洁和简单印象深刻.我仍然会花时间浏览你的资源,看看你是如何完成它的,但它是一个很好的开始:)

关于集成框架,我主要使用ASP.NET MVC,看看它如何将服务器端验证逻辑转换为客户端约束将会很有趣.我可能会在接下来的一个月左右看一些东西.