【问题标题】:Validate custom constraints with JQuery Validation UI Plugin使用 JQuery Validation UI Plugin 验证自定义约束
【发布时间】:2013-02-04 12:02:55
【问题描述】:

我将 grails JQuery Validation UI Plugin 用于 grails 2.1.0。

我几乎可以根据我的命令对象约束来验证客户端的表单。 有一个问题,我的命令对象中有一个自定义约束:

startTime(nullable: false, validator: {startTime, deal ->
    if ((!DateUtils.isSameDay(startTime, new Date()) && startTime.before(new Date()))) //Start date is today or future but not before end date
    {
        return "pastDate"
    }
    if (deal.endTime && startTime.after(deal.endTime)) {
        return "before.endTime"
    }
})


这会生成以下带有页面标记的渲染 jQuery 验证代码:

startTime: {
    date: true,
    required: true,
    validator: {
    url: '/appContextRoot/JQueryRemoteValidator/validate',
    type: 'post',
    data: {
        validatableClass: 'myapp.command.tester.testerDealCommand',
        property: 'startTime'
    }
    }
}

custum 使用“validator:”约束逻辑目前什么都不做。

让这个自定义验证器工作的最佳方法是什么?
1:某种形式的 Ajax 调用?
2:使用Custom Constraits插件,在grails-validation-methods.js中添加js代码?
3:其他方式?

我不确定是否使用选项 2....有什么方法可以扩展插件吗?

我不想在我们的源代码存储库中提交和维护一个单独的插件版本。

【问题讨论】:

  • 像这样处理日期的验证我更喜欢在服务器端进行,因为 javascript 日期对象是奇数 (problems with daylight saving time and depends on machine/browser)。因此,对于您的情况,如果您在发布数据之前确实需要这样做,我会使用 ajax 调用。
  • 请只使用适当的标签。 [jquery-validation-engine] 不是您链接到的插件。已编辑。
  • @SérgioMichels - 日期约束只是我能提供的最简单的示例,实际上我有更多自定义约束,其中包含更复杂的域逻辑。

标签: grails validation grails-plugin


【解决方案1】:

如果我对插件的理解正确,则无需将您的自定义验证直接添加到grails-validation-methods.js

如果你之后加载你的脚本,你可以按照他的约定:

jQuery.validator.addMethod("myCustomValidation", function(value, element, params) {
    //perform your validation here
}, "Custom validation fail.");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-16
    • 2018-01-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多