Javascript 哪个验证库与Backbone.js很好地匹配?

Javascript 哪个验证库与Backbone.js很好地匹配?,javascript,validation,backbone.js,Javascript,Validation,Backbone.js,因为我们使用的是主干网,所以我们并不是每次弹出UI供用户输入数据时都向服务器提交表单。但是一些流行的验证框架假设您有一个来处理各种输入(我们没有),并且您将提交该表单(我没有) 什么样的验证框架能够与某些东西很好地匹配,并允许我在验证时触发,而不关心我的控件是否在表单中?有趣的问题。我自己还没有找到一个100%的解决方案,所以我不认为这是对你问题的直接回答,但这可能有助于如何最好地解决这个问题 对我来说,最合适的是完全用Json定义的验证规则,同时使用客户端和服务器端声明性验证——“构建器”,它

因为我们使用的是主干网,所以我们并不是每次弹出UI供用户输入数据时都向服务器提交表单。但是一些流行的验证框架假设您有一个
来处理各种输入(我们没有),并且您将提交该表单(我没有)


什么样的验证框架能够与某些东西很好地匹配,并允许我在验证时触发,而不关心我的控件是否在表单中?

有趣的问题。我自己还没有找到一个100%的解决方案,所以我不认为这是对你问题的直接回答,但这可能有助于如何最好地解决这个问题

对我来说,最合适的是完全用Json定义的验证规则,同时使用客户端和服务器端声明性验证——“构建器”,它将根据定义构建规则。这将启用干式(服务器/客户端)验证

JSON模式在这方面相当有限

我相信Kansojs.org有一个非常好的JSON验证定义,但我还没有遇到实现它的构建者

不久前我提出了一个关于这个问题的问题,但我担心我的文章式问题没有引起任何回应:)

希望对一些人有帮助,,
Geert Jan

我们最近发现了这个图书馆:

至少在纸面上,它看起来很棒。它不需要表单,相反,似乎很乐意在模型级别进行验证。如果模型上的元素和属性之间存在简单的映射,那么它还可以更新视图中的元素以反映验证中的错误


一旦我们有机会彻底练习它,我会回来更新更多信息。

我正在寻找一个跨平台(nodejs、浏览器)主干验证库,它支持异步测试、自定义测试、自定义语言错误消息、测试关系等

我还没有找到一个独立的库,但我在这里找到了一个解决方案:,它生成整个表单,而不仅仅是验证它,并且还有自定义的错误消息

顺便说一句,用验证器生成表单是个好主意。我认为主干表单不够灵活,对我来说太大了。我想使用Backbone.UI,它有一个自定义数据绑定器。我不知道如何自定义主干表单以使用Backbone.UI数据绑定器


我创建了自己的lib:,它只包含版本1.0中的验证,现在我重构并重写了部分代码,并在版本2.0中添加了一个表单生成器。表单生成器使用字段,我的目标是开发类似于主干表单但由更小的库组成的东西。我认为这是编写可重用javascript代码的方法…

为什么要注意使用并覆盖主干的原始验证入口点?以下是指向文档的链接:

validatemodel.validate(attributes, options) 

从文件中:

validatemodel.validate(attributes, options) 
此方法未定义,建议您使用可以在JavaScript中执行的任何自定义验证逻辑覆盖它

默认情况下,保存检查在设置任何属性之前进行验证,但您也可以通过将
{validate:true}
作为选项传递给set来告诉set验证新属性

validate方法接收模型属性以及传递给set或save的任何选项。如果属性有效,则不从validate返回任何内容;如果它们无效,则返回您选择的错误

它可以是要显示的字符串错误消息,也可以是以编程方式描述错误的完整错误对象。如果validate返回错误,则不会继续保存,并且不会在服务器上修改模型属性。失败的验证会触发一个“无效”事件,并使用此方法返回的值在模型上设置validationError属性

-- 还应使用并覆盖这两个功能:

validationErrormodel.validationError 
上次验证失败期间验证返回的值

isValidmodel.isValid() 

运行validate检查模型状态。

您考虑了哪些验证框架?jQuery验证插件()是主要的验证框架。在我的上一个项目中使用了很多之后,我对使用另一个与表单紧密相连的表单的幻想破灭了。最近我查看了validate.js()并意识到它做出了相同的基本假设(form+submission=validation)。这就是为什么我认为我应该四处打听以找到更好的解决方案。你觉得这个怎么样?如果您试图将属性设置为无效值,我会花很多时间尝试扩展它,将值设置为默认值。我最终没有在我编写的代码中进行太多验证(这是一堆复杂的数据显示和用户与它的交互,但没有真正的数据输入)。我的一位同事告诉我,我们正在使用一个重新编写的验证版本,因为我们并不热衷于它在实践中的工作方式。所以我认为我们现在拥有的是相当本土的。这正是我们开始走的路线。如果新值未验证,我们希望验证框架使用默认值(如果有)。外面的两个大公司没有这个选择,所以我们开始黑客攻击。希望我们能说服我们的所有者全部开源!感谢您添加了一个新的答案,这是关于错误消息限制的一个很好的说明。这不是我必须考虑的事情(奇怪的是,我现在的雇主并不关心这一点),但许多网站都必须记住。是的,我将编写一个匈牙利应用程序,因此错误消息中的英文财产名称不是一个选项S我必须自己编写验证器,我想……今天这可能是一个有效的答案,但我相当肯定,当我四年前问这个问题时,Backbone.js.Hi@johnmunch中没有这样的验证钩子,我只是留下了答案,以便今天/将来搜索它的人都可以阅读你的答案