【问题标题】:parsley.js - custom validation for date fieldparsley.js - 日期字段的自定义验证
【发布时间】:2014-10-04 05:43:04
【问题描述】:

我一直在阅读parsley.js docs,并尝试编写自定义验证器来验证日期是否大于今天的日期。

我已经编写了条件代码,但我完全不知道如何应用条件错误消息。

我已经使用 parsley maxlength 验证器完成了任务,但意识到这并不完美。

如何使用 parsley 编写自定义验证?

这是我的 js/jq 代码,它使用 maxlength 动态添加和删除验证:

if(formattedStartDate > todaysDate) {

    $('#id_voluntary_start_date').attr('data-parsley-maxlength', '1');
    $('#id_voluntary_start_date').attr('data-parsley-maxlength-message', '{% trans "Commencement Date must not be greater than today." %}');
    $('#id_voluntary_start_date').parsley();
} else {
    $('#id_voluntary_start_date').attr('data-parsley-maxlength', '50');
}

任何有关实施自定义验证的帮助将不胜感激。

【问题讨论】:

    标签: javascript jquery validation parsley.js


    【解决方案1】:

    首先设置一个隐藏的文本框并在其中存储今天的日期,然后在要检查的日期字段上写下以下代码。

    data-parsley-dlte = "#hiddentextboxid",
    data-parsley-dlte_message = "Your custom message"
    

    别忘了在你的 dom 元素所在的表单上设置 parsley。

    如果这不起作用,请检查 parsley js 的版本。

    希望这有帮助。

    【讨论】:

      【解决方案2】:

      您需要做的就是在全局(在 window.ParsleyConfig 中)或为您的特定表单注册您的自定义验证器,如下所示:

        myForm.parsley({
          validators: {
              custom: function (value) {
                  var now = new Date();
                  var date = new Date(value);
                  return date < now;
              }
          },
          messages: {
              custom: 'Commencement Date must not be greater than today'
          }
      });
      

      这是jsFiddle 的示例

      【讨论】:

      • 感谢代码和 jsFiddle。这对我帮助很大。我快到了。如何仅指定对特定文本输入 ID 的验证?例如:
      • 可以在需要提供选择器的地方使用“inputs”选项来完成,比如“inputs: '#date1'”(见jsFiddle)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-09
      • 1970-01-01
      相关资源
      最近更新 更多