欧芹日期格式

Hon*_* Yi 3 javascript parsley.js

我目前正在设置一个<input type=date>带有Parsley字段的表单,以验证日期不能过去.但是,尽管给出了正确的值(将来),但我无法验证它.它似乎从min字段读取最小值,但我尝试更改格式(例如Y/m/d),但错误仍然会弹出.我能否知道这背后的问题是什么?它的解决方法是什么?提前致谢.

错误是This value should be greater than or equal to 10/21/2014.即使我比它晚了一个日期.

<input type="date" name="contact-date" id="contact-date" placeholder="MM/DD/YYYY" data-date-format="mm/dd/yyyy" min="<?php echo date('m/d/Y'); ?>" parsley-type="dateIso">
Run Code Online (Sandbox Code Playgroud)

我查看了KD的答案并意识到正则表达式是针对DD/MM/YYYY所以我改变了它

/^([12]\d|0[1-9]|3[01])\D?(0[1-9]|1[0-2])\D?(\d{4})$/

/^(0[1-9]|1[0-2])\D?([12]\d|0[1-9]|3[01])\D?(\d{4})$/

虽然指定了最小值,但不知何故,这更改为传递的任何日期都是有效日期.

代码现在是:

<input type="date" class="contact-input" name="contact-date" id="contact-date" placeholder="MM/DD/YYYY" data-type="dateIso" data-parsley-min="<?php echo date('m/d/Y'); ?>">
Run Code Online (Sandbox Code Playgroud)

Luí*_*ruz 8

parsley-type="dateIso"告诉我你正在使用Parsley v1.*这是不推荐使用的.data-date-format="mm/dd/yyyy"告诉我你正在使用Bootstrap Datetimepicker.

我建议你使用Parsley 2.x(即使你需要为最小日期制作验证器)并使用data-date-minDateDatetimepicker 的属性.

对于此解决方案,您需要以下代码(使用jsfiddle):

<div class='input-group date' id='datetimepicker'>
    <input type='text' name="contact-date" id="contact-date"
        placeholder="MM/DD/YYYY"
        data-date-format="MM/DD/YYYY"
        data-date-minDate="<?php echo date('m/d/Y'); ?>"
        data-parsley-mindate="<?php echo date('m/d/Y'); ?>" />
    <span class="input-group-addon"><span class="glyphicon glyphicon-calendar"></span>
</span>
</div>

<script>
window.ParsleyValidator
    .addValidator('mindate', function (value, requirement) {
        // is valid date?
        var timestamp = Date.parse(value),
            minTs = Date.parse(requirement);

        return isNaN(timestamp) ? false : timestamp > minTs;    
    }, 32)
    .addMessage('en', 'mindate', 'This date should be greater than %s');

$('#myForm').parsley();

$('#datetimepicker').datetimepicker({
    language:'en'
});
</script>
Run Code Online (Sandbox Code Playgroud)

笔记:

  • data-date-format应该是MM/DD/YYYY(大写,检查momentjs文档);
  • 更换parsley-type="dateIso"data-parsley-mindate="<?php echo date('m/d/Y'); ?>" />这样执行自定义验证