【问题标题】:Using jquery-validate (or similar) and JSONSchema to validate forms使用 jquery-validate(或类似的)和 JSONSchema 来验证表单
【发布时间】:2014-01-21 05:50:01
【问题描述】:

我们有一个包含多个表单的网络应用程序,其中大多数包含几十个字段。现在,我们使用表单中输入的数据创建 json 对象,并将这些对象发送到 REST 服务,然后将这些数据保存到 NoSQL 数据库 (MongoDB)。

目前,我们正在使用 jquery-validator 在客户端执行验证。但是,我们需要使用相同的 JSONSchema(在客户端和服务器端)验证数据。

有没有办法使用 jquery-validate(或其他类似插件)来做到这一点?我在想也许有一种方法可以用 JSONSchema 文件替换为 jquery-validate 定义的“规则”。

我尝试过使用“Alpaca”,它可以使用 JSONSchema 生成和验证表单,但我遇到的问题是 Alpaca 无法处理嵌套的 json 对象,我有很多,它似乎只适用于简单的 json 结构。

任何帮助将不胜感激。

更新

假设我有以下 jquery-validate 规则(出于示例目的相当简单):

$('#formId').validate({
    rules: {
        firstField: {
            required: true
        },
        secondField: {
            required: true,
            maxlength: 80
        }
    }
});

我有以下 JSONSchema 文件:

{
    "$schema": "http://json-schema.org/draft-03/schema#",
    "type": "object",
    "additionalProperties": false,
    "description": "MyJsonSchema",
    "properties": {
            "firstField": {
                "description": "some text here",
                "type": "string",
                "maxLength": 15,
                "required": true
            },
            "secondField": {
                "description": "some text here",
                "type": "string",
                "maxLength": 80,
                "required": true
            }
        }
    }

我想做的是找到一种方法来替换 jquery-validate 插件中的“规则”,而不是只读取 JSONSchema 属性,以便我在 JSONSchema 文件中拥有所有表单的验证规则(其中我可以用于客户端和服务器端验证)而不是为每个表单编写规则。

有什么办法吗?

正如我之前所说,使用 AlpacaJS 之类的工具可以渲染和验证 JSONSchema 文件中的表单,但我无法将 Alpaca 用于更复杂的 json 结构。

【问题讨论】:

  • 您将不得不展示一些代码示例并提出更具体的问题。就目前而言,您的问题太宽泛了。
  • 最简单的方法可能是extract the form data as an object - 然后您可以使用您选择的任何 JSON Schema 库来验证这一点。

标签: json jquery-validate jsonschema


【解决方案1】:

JavaScript 中有几个 JSON Schema 验证器。请查看JSON Schema Software 页面。

该页面上缺少JSON Form,它既可以生成表单又可以验证它(使用JSV)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-07-17
    • 2021-09-03
    • 2011-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多