我使用的是设置范围为1999:2005
的日期选择器,但我只希望08-01-1999
对07-31-2005
有效,所以如果用户在这些日期之外选择,我就不会我希望我的表单提交但是提示用户添加正确的日期,我正在使用parsley.js并且想知道是否可以在那里添加日期范围来处理这个问题?如果没有,我可以添加自己的验证。
答案 0 :(得分:2)
您可以使用parsley-beforedate="#elem"
和parsley-afterdate="#elem"
来伪造它,以引用隐藏的,未提交的字段,这些字段中包含这些边界值。
或者,在JavaScript中编写一个自定义验证器,您可以将这些验证器应用于这些日期字段以及标准日期验证。这是我为防止将来约会而写的。您可以根据日期范围验证调整它(注意:它使用jqueryui中的datepicker例程)。
$( '#formUpdate' ).parsley( {
validateIfUnchanged: true,
validators: {
// checks that a date is not in the future
// try needed because datepicker can throw an exception
notfuturedate: function ( fieldValue ) {
try {
var d1 = $.datepicker.parseDate("dd/mm/yy", fieldValue); // convert string to date
} catch (e) {
// if date is invalid, let the date check routine report it
return true;
}
var d0 = new Date(); // today
return (d1<=d0);
}
}
// some other irrelevant lines omitted
});
在声明了这个新的验证器后,您只需将parsley-notfuturedate="true"
放在输入字段上,它就像内置的欧芹验证一样。
此外,如果您使用类似jqueryUI的日期选择器,则可以使用选项(minDate,maxDate)来限制可用范围。
答案 1 :(得分:1)
<input type="text" placeholder="MM/DD/YYYY" required="" data-parsley-required-message="Date is required." data-parsley-pattern="^[0-9]{2}/[0-9]{2}/[0-9]{4}$" data-parsley-pattern-message="Invalid Date." data-parsley-maxdate="12/31/2019" data-parsley-mindate="01/01/2018" data-date-format="MM/DD/YYYY">
<script type="text/javascript">
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', '<div class="date-error">Date should be greater than or equal to %s</div>');
window.ParsleyValidator
.addValidator('maxdate', function(value, requirement) {
// is valid date?
var timestamp = Date.parse(value),
minTs = Date.parse(requirement);
return isNaN(timestamp) ? false : timestamp <= minTs;
}, 32)
.addMessage('en', 'maxdate', '<div class="date-error">Date should be less than or equal to %s </div>');
</script>