РЕДАКТИРОВАТЬ:
Я попытался это безуспешно:
window.Parsley.addValidator('date', {
validateString: function(value, format) {
if (! value) {
return true;
}
var date = moment(value, format, true);
return date.isValid();
},
priority: 256,
messages: {
en: 'It must be a valid date with format %s',
it: 'Deve essere una data valida nel formato %s'
}
});
window.Parsley.addValidator('datebeforenow', {
validateString: function(value, format, parsleyField) {
console.log("value", value);
if (! value) {
return true;
}
var $elem = parsleyField.$element;
$elem.attr(parsleyField.options.namespace + 'date', format);
$elem.removeAttr(parsleyField.options.namespace + 'datebeforenow');
$elem.parsley().whenValidate().then(function () {
$elem.attr(parsleyField.options.namespace + 'datebeforenow', format);
$elem.parsley().reset();
var date = moment(value, format, true);
console.log("date", date);
return date.isBefore(moment());
}).always(function () {
$elem.attr(parsleyField.options.namespace + 'datebeforenow', format);
console.log("$elem", $elem)
});
},
priority: 255,
messages: {
en: "Date must be before now",
it: "Inserire una data precedente a quella attuale",
},
});
date
сообщение отображается правильно, если вы вводите недопустимую дату, но если вы вводите действительную дату после текущейдата, сообщение не отображается.Я также попытался установить более низкий приоритет на date
.
ОРИГИНАЛЬНЫЙ ВОПРОС:
Я создал этот валидатор Петрушки:
window.Parsley.addValidator('date', {
validateString: function(value, format) {
if (! value) {
return true;
}
var date = moment(value, format, true);
return date.isValid();
},
priority: 256,
});
и у меня естьэтот другой валидатор:
window.Parsley.addValidator('datebeforenow', {
validateString: function(value, format) {
if (! value) {
return true;
}
var valid_date = Parsley._validatorRegistry.validators.date.validateString(value, format);
if (! valid_date) {
return true;
}
var date = moment(value, format, true);
return date.isBefore(moment());
},
priority: 256,
});
Я надеялся, что Parsley._validatorRegistry.validators.date.validateString(value, format);
вызвал другой валидатор, и в поле отобразится сообщение об ошибке date
валидатор, поэтому мне не нужно добавлять оба валидатора.Но сообщение об ошибке не появляется.
Как правильно вызвать валидатор внутри другого?