Skip to content

Commit 42ce32f

Browse files
committed
Adding validations for minimum and maximum dates
Changing the date validation function, adding optional attributes min-date and max-date. If informed, it sets an allowed range for the date. It checks following this order: valid date, minimum date, maximum date. Both data-validation-min-date and max-date should be informed using the same format as the field (yyyy-mm-dd as default or any format informed through data-validation-format). English and portuguese locales are ok. The other ones are untranslated. Request on issue #656
1 parent f86f581 commit 42ce32f

File tree

22 files changed

+77
-5
lines changed

22 files changed

+77
-5
lines changed

src/lang/ar.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@
2424
badTelephone: 'رقم الهاتف المدخل خاطئ',
2525
badSecurityAnswer: 'لم يتم الإجابة عن سؤال الأمان',
2626
badDate: 'تاريخ مدخل خاطئ',
27+
badDateBefore: 'The minimum allowed date is ',
28+
badDateAfter: 'The maximum allowed date is ',
2729
lengthBadStart: 'القيمة المدخلة يجب أن تكون بين ',
2830
lengthBadEnd: ' حروف',
2931
lengthTooLongStart: 'القيمة المدخل أطول من ',

src/lang/ca.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@
2424
badTelephone: 'El número de telèfon proporcionat no és vàlid',
2525
badSecurityAnswer: 'La resposta a la seva pregunta de seguretat és incorrecte',
2626
badDate: 'La data proporcionada no és vàlida',
27+
badDateBefore: 'The minimum allowed date is ',
28+
badDateAfter: 'The maximum allowed date is ',
2729
lengthBadStart: 'La seva resposta s\'ha d\'incloure entre ',
2830
lengthBadEnd: ' caràcters',
2931
lengthTooLongStart: 'La seva resposta ha de ser menor a ',

src/lang/cs.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@
2424
badTelephone: 'Neplatné telefonní číslo',
2525
badSecurityAnswer: 'Chybná odpověď na bezpečnostní otázku',
2626
badDate: 'Nesprávné datum',
27+
badDateBefore: 'The minimum allowed date is ',
28+
badDateAfter: 'The maximum allowed date is ',
2729
lengthBadStart: 'Zadaná hodnota musí být v rozmezí ',
2830
lengthBadEnd: ' znaků',
2931
lengthTooLongStart: 'Zadaná hodnota je větší než ',

src/lang/da.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@
2323
badCreditCard:'Det angivne kortnummer er ugyldigt',
2424
badCustomVal: 'Den indtastede værdi er ugyldig',
2525
badDate: 'Den angivne dato er ugyldig',
26+
badDateBefore: 'The minimum allowed date is ',
27+
badDateAfter: 'The maximum allowed date is ',
2628
badDomain: 'Det angivne domæne er ugyldigt',
2729
badEmail: 'Den angivne email adresse er ugyldig',
2830
badInt: 'Det angivne tal er ugyldigt',

src/lang/de.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@
2424
badTelephone: 'Sie haben keine richtige Telefonnummer eingetragen',
2525
badSecurityAnswer: 'Sie haben die falsche Antwort auf die Sicherheitsfrage eingegeben',
2626
badDate: 'Eingabe eines falschen Datums',
27+
badDateBefore: 'The minimum allowed date is ',
28+
badDateAfter: 'The maximum allowed date is ',
2729
lengthBadStart: 'Der eingegebene Wert muss dazwischen sein ',
2830
lengthBadEnd: '  Zeichen',
2931
lengthTooLongStart: 'Der eingegebene Wert ist größer als ',

src/lang/es.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@
2424
badTelephone: 'El número de teléfono proporcionado no es válido',
2525
badSecurityAnswer: 'La respuesta a su pregunta de seguridad es incorrecta',
2626
badDate: 'La fecha proporcionada no es válida',
27+
badDateBefore: 'The minimum allowed date is ',
28+
badDateAfter: 'The maximum allowed date is ',
2729
lengthBadStart: 'Su respuesta debe incluir entre ',
2830
lengthBadEnd: ' caracteres',
2931
lengthTooLongStart: 'Su respuesta debe de ser menor a ',

src/lang/fa.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@
2626
badTelephone: 'شماره تلفن وارد شده معتبر نیست',
2727
badSecurityAnswer: 'شما به سوال امنیتی درست پاسخ نداده اید',
2828
badDate: 'تاریخ درستی را وارد نکرده اید',
29+
badDateBefore: 'The minimum allowed date is ',
30+
badDateAfter: 'The maximum allowed date is ',
2931
lengthBadStart: 'مقدار وارد شده باید ',
3032
lengthBadEnd: ' حرف باشد.',
3133
lengthTooLongStart: 'مقدار ورودی بیشتر از ',

src/lang/fr.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@
2424
badTelephone: 'Vous n\'avez pas saisi un numéro de téléphone valide',
2525
badSecurityAnswer: 'Vous avez saisi une mauvaise réponse à la question de sécurité',
2626
badDate: 'Vous n\'avez pas saisi une date correcte',
27+
badDateBefore: 'The minimum allowed date is ',
28+
badDateAfter: 'The maximum allowed date is ',
2729
lengthBadStart: 'Votre saisie doit comporter entre ',
2830
lengthBadEnd: ' caractères',
2931
lengthTooLongStart: 'Vous avez saisi une réponse qui est plus longue que ',

src/lang/it.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@
2424
badTelephone: 'Il numero di telefono imputato non è valido',
2525
badSecurityAnswer: 'La risposta alla domanda di sicurezza è errata',
2626
badDate: 'La data scelta non è valida',
27+
badDateBefore: 'The minimum allowed date is ',
28+
badDateAfter: 'The maximum allowed date is ',
2729
lengthBadStart: 'La sua risposta non può essere più lunga di ',
2830
lengthBadEnd: ' caratteri',
2931
lengthTooLongStart: 'La lunghezza della risposta deve essere minore di ',

src/lang/ka.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@
2424
badTelephone: 'თქვენ მიუთითეთ არასწორი ტელეფონის ნომერი',
2525
badSecurityAnswer: 'თქვენ გაეცით არასწორი პასუხი უსაფრთხოების კითხვას',
2626
badDate: 'თქვენ მიუთითეთ არასწორი თარიღი',
27+
badDateBefore: 'The minimum allowed date is ',
28+
badDateAfter: 'The maximum allowed date is ',
2729
lengthBadStart: 'ველის მნიშვნელობის სიგრძე უნდა იყოს ',
2830
lengthBadEnd: ' შუალედში',
2931
lengthTooLongStart: 'ველის მნიშვნელობის სიგრძე უნდა იყოს მაქსიმუმ ',

src/lang/ko.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@
2424
badTelephone: '전화번호를 정확하게 입력하지 않았습니다.',
2525
badSecurityAnswer: '보안 입력을 정확하게 입력하지 않았습니다.',
2626
badDate: '날짜를 정확하게 입력하지 않았습니다.',
27+
badDateBefore: 'The minimum allowed date is ',
28+
badDateAfter: 'The maximum allowed date is ',
2729
lengthBadStart: '입력 값은 ',
2830
lengthBadEnd: ' 사이의 문자여야 합니다.',
2931
lengthTooLongStart: '입력 값의 길이가 ',

src/lang/nl.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@
2323
badCreditCard: 'Het creditcardnummer is onjuist',
2424
badCustomVal: 'De ingevoerde waarde is onjuist',
2525
badDate: 'U heeft niet de juiste datum aangegeven',
26+
badDateBefore: 'The minimum allowed date is ',
27+
badDateAfter: 'The maximum allowed date is ',
2628
badDomain: 'Incorrect domein',
2729
badEmail: 'U heeft een onjuist e-mailadres ingevoerd ',
2830
badInt: 'De ingevoerde waarde was een onjuist getal',

src/lang/no.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@
2323
badCreditCard: 'Kredittkortnummeret er ikke korrekt',
2424
badCustomVal: 'Inntastingsverdien er ikke korrekt',
2525
badDate: 'Du har ikke oppgitt en korrekt dato',
26+
badDateBefore: 'The minimum allowed date is ',
27+
badDateAfter: 'The maximum allowed date is ',
2628
badDomain: 'Ukorrekt domeneverdi',
2729
badEmail: 'Du har ikke oppgitt en korrekt e-postadresse',
2830
badInt: 'Inntastingsverdien er ikke et korrekt tall',

src/lang/pl.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@
2424
badTelephone: 'Wprowadzono niepoprawny numeru telefonu',
2525
badSecurityAnswer: 'Nieprawidłowa odpowiedź na pytanie bezpieczeństwa',
2626
badDate: 'Niepoprawna data',
27+
badDateBefore: 'The minimum allowed date is ',
28+
badDateAfter: 'The maximum allowed date is ',
2729
lengthBadStart: 'Wprowadzona wartość musi być pomiędzy ',
2830
lengthBadEnd: ' znaków',
2931
lengthTooLongStart: 'Wprowadzona wartość jest większa niż ',

src/lang/pt.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@
2424
badTelephone: 'O telefone digitado não é válido',
2525
badSecurityAnswer: 'A pergunta de segurança não foi respondida corretamente',
2626
badDate: 'A data digitada não é válida',
27+
badDateBefore: 'A data mínima permitida é ',
28+
badDateAfter: 'A data máxima permitida é ',
2729
lengthBadStart: 'Sua resposta deve incluir entre ',
2830
lengthBadEnd: ' caracteres',
2931
lengthTooLongStart: 'Sua resposta tem mais que ',

src/lang/ro.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@
2424
badTelephone: 'Numărul de telefon este incorect',
2525
badSecurityAnswer: 'Răspuns incorect la întrebarea de siguran?ă',
2626
badDate: 'Dară incorectă',
27+
badDateBefore: 'The minimum allowed date is ',
28+
badDateAfter: 'The maximum allowed date is ',
2729
lengthBadStart: 'Valoarea introdusă trebuie să fie interval ',
2830
lengthBadEnd: ' caractere',
2931
lengthTooLongStart: 'Valoarea introdusă este mai mare decât ',

src/lang/ru.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@
2525
badTelephone: 'Вы задали некорректный номер телефона',
2626
badSecurityAnswer: 'Вы задали некорректный ответ на секретный вопрос',
2727
badDate: 'Вы задали некорректную дату',
28+
badDateBefore: 'The minimum allowed date is ',
29+
badDateAfter: 'The maximum allowed date is ',
2830
lengthBadStart: 'Значение должно быть в диапазоне',
2931
lengthBadEnd: ' символов',
3032
lengthTooLongStart: 'Значение длинее, чем ',

src/lang/sv.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@
2424
badTelephone: 'Du har inte angett ett korrekt telefonnummer',
2525
badSecurityAnswer: 'Du har angett fel svar på säkerhetsfrågan',
2626
badDate: 'Du har anget ett felaktigt datum',
27+
badDateBefore: 'The minimum allowed date is ',
28+
badDateAfter: 'The maximum allowed date is ',
2729
lengthBadStart: 'Ditt svar måste innehålla mellan ',
2830
lengthBadEnd: ' tecken',
2931
lengthTooLongStart: 'Du har angett ett svar som är längre än ',

src/lang/tr.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@
2424
badTelephone: 'Geçersiz telefon numarası girdiniz',
2525
badSecurityAnswer: 'Güvenlik sorusuna doğru cevap vermediniz',
2626
badDate: 'Geçersiz tarih girdiniz',
27+
badDateBefore: 'The minimum allowed date is ',
28+
badDateAfter: 'The maximum allowed date is ',
2729
lengthBadStart: 'Girilen değer ',
2830
lengthBadEnd: ' karakter olmalıdır',
2931
lengthTooLongStart: 'Girilen değer en fazla ',

src/lang/vi.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@
2323
badTelephone: 'Số điện thoại chưa chính xác',
2424
badSecurityAnswer: 'Câu hỏi bảo mật chưa chính xác',
2525
badDate: 'Ngày tháng chưa chính xác',
26+
badDateBefore: 'The minimum allowed date is ',
27+
badDateAfter: 'The maximum allowed date is ',
2628
lengthBadStart: 'Yêu cầu nhập từ ',
2729
lengthBadEnd: ' ký tự',
2830
lengthTooLongStart: 'Dữ liệu quá dài, yêu cầu ít hơn ',

src/main/core-validators.js

Lines changed: 35 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -273,16 +273,46 @@
273273

274274
/*
275275
* Validate date
276+
* element attrs (optional, and both must use the same format as the field)
277+
* data-validation-min-date
278+
* data-validation-max-date
276279
*/
277280
$.formUtils.addValidator({
278281
name: 'date',
279-
validatorFunction: function (date, $el, conf) {
282+
validatorFunction: function (date, $el, conf, lang) {
280283
var dateFormat = $el.valAttr('format') || conf.dateFormat || 'yyyy-mm-dd',
281284
addMissingLeadingZeros = $el.valAttr('require-leading-zero') === 'false';
282-
return $.formUtils.parseDate(date, dateFormat, addMissingLeadingZeros) !== false;
283-
},
284-
errorMessage: '',
285-
errorMessageKey: 'badDate'
285+
var dateParsed = $.formUtils.parseDate(date, dateFormat, addMissingLeadingZeros);
286+
//checking date format
287+
if (dateParsed === false){
288+
this.errorMessage = lang.badDate;
289+
return false;
290+
}
291+
var dateInput = new Date(dateParsed[0], dateParsed[1] - 1, dateParsed[2]);
292+
//checking min date, when informed
293+
var dateMinValue = $el.valAttr('min-date');
294+
if (dateMinValue !== false && $.formUtils.parseDate(dateMinValue, dateFormat, addMissingLeadingZeros) !== false){
295+
var dateMinParsed = $.formUtils.parseDate(dateMinValue, dateFormat, addMissingLeadingZeros);
296+
var dateMin = new Date(dateMinParsed[0], dateMinParsed[1] - 1, dateMinParsed[2]);
297+
if (dateInput < dateMin){
298+
this.errorMessage = lang.badDateBefore + dateMinValue;
299+
return false;
300+
}
301+
}
302+
//checking max date, when informed
303+
var dateMaxValue = $el.valAttr('max-date');
304+
if (dateMaxValue !== false && $.formUtils.parseDate(dateMaxValue, dateFormat, addMissingLeadingZeros) !== false){
305+
var dateMaxParsed = $.formUtils.parseDate(dateMaxValue, dateFormat, addMissingLeadingZeros);
306+
var dateMax = new Date(dateMaxParsed[0], dateMaxParsed[1] - 1, dateMaxParsed[2]);
307+
if (dateInput > dateMax){
308+
this.errorMessage = lang.badDateAfter + dateMaxValue;
309+
return false;
310+
}
311+
}
312+
return true;
313+
}
314+
//errorMessage: '', //setted above on the function
315+
//errorMessageKey: 'badDate' //not used
286316
});
287317

288318

src/main/utils.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -646,6 +646,8 @@
646646
badTelephone: 'You have not given a correct phone number',
647647
badSecurityAnswer: 'You have not given a correct answer to the security question',
648648
badDate: 'You have not given a correct date',
649+
badDateBefore: 'The minimum allowed date is ',
650+
badDateAfter: 'The maximum allowed date is ',
649651
lengthBadStart: 'The input value must be between ',
650652
lengthBadEnd: ' characters',
651653
lengthTooLongStart: 'The input value is longer than ',

0 commit comments

Comments
 (0)