我不确定我是否可以问这种问题,但在看到this之后在 Meta Stackoverflow 上,看起来这种问题是可以的。那么,回到我的问题:
几个月前,我用 Javascript 编写了一个验证框架。我知道已经存在像 jQuery Validation 这样的验证框架,但我想采用不同的验证方法。当前的方法涉及编写 Javascript 代码以对表单元素执行验证。通过查看表单源代码,并不能立即看出每个元素上发生了什么验证。在某种程度上,这可以通过使用指定不同类型验证的 CSS 类来解决。但我觉得即使这样也有局限性,因为您无法轻松自定义验证的行为(错误消息等)。我想使用 JSR-303 Bean Validation 在 Java 中做一些类似基于注解的验证的事情或 Hibernate Validator .
由于 HTML5 允许您向元素添加自定义属性,我想我可以利用它来“注释”表单元素以进行验证。所以,基本上,我想到了这个:
<input id = "myInput"
name = "myInput"
type = "text"
class = "regula-validation"
data-constraints = '@NotEmpty @IsNumeric @Between(min=1, max=5)' />
考虑到这个基本想法,我创建了一个 Javascript 框架:
此外,该框架还有以下特点:
一旦我创建了我的框架,我就试图获得反馈和审查,但我不确定去哪里获得反馈和审查。我写了一些关于它的博客文章,并在没有太多运气的情况下将其发布到 Digg 和 Reddit(编程部分)。有几个人似乎很感兴趣,但我没有得到更多。
最近,在我的工作场所,我们一直在对遗留代码库(JSP 和 servlet)进行现代化改造,并将其迁移到 Spring MVC 中。当验证对话出现时,我向我的高级架构师介绍了我的框架。我做了一些集成和概念验证,他们似乎很感兴趣,并同意我将其添加到项目中。到目前为止,我只有自己的拙见,认为这将是一种有用的验证方式,所以这让我有信心相信我的想法和框架可能有一些优点。但是,我仍然需要更多的参与和框架。在我发现 Stackoverflow 确实允许此类问题后,我决定将其张贴在这里以获得一些建设性的批评、评论和反馈。
因此,我想立即介绍 Regula .我提供的链接转到 GitHub 上的 wiki,其中包含该框架的所有文档。您可以从here下载最新版本(v1.1.0) .
期待您的评论。
一些不直接相关的额外信息
我曾经考虑过将我的框架与 Spring 集成的想法,即将 bean 上的验证注释转换为客户端验证。最近我能够让它工作,即使是验证组(尽管目前不支持客户端组之间的继承关系)。这样,您只需使用验证约束注释字段属性,客户端验证代码就会自动生成。但是,我是 Spring 新手,所以我的方法可能不是那么干净。我也想就此获得一些反馈,所以如果有人感兴趣,请告诉我。理想情况下(我希望我不要太自命不凡)我想联系 Spring 人员,看看他们是否对此感兴趣。
最佳答案
我已经非常喜欢它了,它让我的 html 保持干净,而且构建自定义验证器的能力也很棒。我添加的一件事是绑定(bind)验证和提交功能的简写,并将其包装为一个 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);
}
事实上,我刚刚 blogged关于它,因为我对它的干净和简单印象深刻。我仍将花时间浏览您的源代码,看看您是如何完成它的,但这是一个很好的开始 :)
关于集成您的框架,我主要使用 ASP.NET MVC,看看它如何将服务器端验证逻辑转换为客户端约束会很有趣。我可能会在下个月左右查看一些内容。
关于Javascript 表单验证框架 : Request for Review,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3472996/
给定这段代码defcreate@upgrades=User.update_all(["role=?","upgraded"],:id=>params[:upgrade])redirect_toadmin_upgrades_path,:notice=>"Successfullyupgradeduser."end我如何在该操作中实际验证它们是否已保存或未重定向到适当的页面和消息? 最佳答案 在Rails3中,update_all不返回任何有意义的信息,除了已更新的记录数(这可能取决于您的DBMS是否返回该信息)。http://ar.ru
我想安装一个带有一些身份验证的私有(private)Rubygem服务器。我希望能够使用公共(public)Ubuntu服务器托管内部gem。我读到了http://docs.rubygems.org/read/chapter/18.但是那个没有身份验证-如我所见。然后我读到了https://github.com/cwninja/geminabox.但是当我使用基本身份验证(他们在他们的Wiki中有)时,它会提示从我的服务器获取源。所以。如何制作带有身份验证的私有(private)Rubygem服务器?这是不可能的吗?谢谢。编辑:Geminabox问题。我尝试“捆绑”以安装新的gem..
我得到了一个包含嵌套链接的表单。编辑时链接字段为空的问题。这是我的表格:Editingkategori{:action=>'update',:id=>@konkurrancer.id})do|f|%>'Trackingurl',:style=>'width:500;'%>'Editkonkurrence'%>|我的konkurrencer模型:has_one:link我的链接模型:classLink我的konkurrancer编辑操作:defedit@konkurrancer=Konkurrancer.find(params[:id])@konkurrancer.link_attrib
我希望我的UserPrice模型的属性在它们为空或不验证数值时默认为0。这些属性是tax_rate、shipping_cost和price。classCreateUserPrices8,:scale=>2t.decimal:tax_rate,:precision=>8,:scale=>2t.decimal:shipping_cost,:precision=>8,:scale=>2endendend起初,我将所有3列的:default=>0放在表格中,但我不想要这样,因为它已经填充了字段,我想使用占位符。这是我的UserPrice模型:classUserPrice回答before_val
我有一个表单,其中有很多字段取自数组(而不是模型或对象)。我如何验证这些字段的存在?solve_problem_pathdo|f|%>... 最佳答案 创建一个简单的类来包装请求参数并使用ActiveModel::Validations。#definedsomewhere,atthesimplest:require'ostruct'classSolvetrue#youcouldevencheckthesolutionwithavalidatorvalidatedoerrors.add(:base,"WRONG!!!")unlesss
我有一些非常大的模型,我必须将它们迁移到最新版本的Rails。这些模型有相当多的验证(User有大约50个验证)。是否可以将所有这些验证移动到另一个文件中?说app/models/validations/user_validations.rb。如果可以,有人可以提供示例吗? 最佳答案 您可以为此使用关注点:#app/models/validations/user_validations.rbrequire'active_support/concern'moduleUserValidationsextendActiveSupport:
当我的预订模型通过rake任务在状态机上转换时,我试图找出如何跳过对ActiveRecord对象的特定实例的验证。我想在reservation.close时跳过所有验证!叫做。希望调用reservation.close!(:validate=>false)之类的东西。仅供引用,我们正在使用https://github.com/pluginaweek/state_machine用于状态机。这是我的预订模型的示例。classReservation["requested","negotiating","approved"])}state_machine:initial=>'requested
我有一个服务模型/表及其注册表。在表单中,我几乎拥有服务的所有字段,但我想在验证服务对象之前自动设置其中一些值。示例:--服务Controller#创建Action:defcreate@service=Service.new@service_form=ServiceFormObject.new(@service)@service_form.validate(params[:service_form_object])and@service_form.saverespond_with(@service_form,location:admin_services_path)end在验证@ser
这里有一个很好的答案解释了如何在Ruby中下载文件而不将其加载到内存中:https://stackoverflow.com/a/29743394/4852737require'open-uri'download=open('http://example.com/image.png')IO.copy_stream(download,'~/image.png')我如何验证下载文件的IO.copy_stream调用是否真的成功——这意味着下载的文件与我打算下载的文件完全相同,而不是下载一半的损坏文件?documentation说IO.copy_stream返回它复制的字节数,但是当我还没有下
Transformers开始在视频识别领域的“猪突猛进”,各种改进和魔改层出不穷。由此作者将开启VideoTransformer系列的讲解,本篇主要介绍了FBAI团队的TimeSformer,这也是第一篇使用纯Transformer结构在视频识别上的文章。如果觉得有用,就请点赞、收藏、关注!paper:https://arxiv.org/abs/2102.05095code(offical):https://github.com/facebookresearch/TimeSformeraccept:ICML2021author:FacebookAI一、前言Transformers(VIT)在图