В наш век огромного потока информации, пользователю важна каждая сэкономленная при обработке информации секунда. Программисты каждый день ищут новые способы, как сделать его работу с ПО быстрее и эффективнее.
Ниже я привел, на мой взгляд, простейшие алгоритмы автоисправления и автодозаполнения при вводе значения в поле формата "Дата", которые позволяют пользователю избежать многих опечаток, а системе интуитивно понять какую дату он хочет ввести.
Алгоритмы написаны для стандартного формата: dd.mm.yyyy
- Первая и вторая введенные цифры не могут составлять вместе как двухзначное число менее 1 или более 31.
Если в первый и второй символ вводится число 00, то автоматически исправлять его на 01.
Если в первый и второй символ вводится число более 31, то автоматически исправлять его на 31.
Если в первый и второй символ вводится число 29, 30 или 31, и далее пользователем или системой в поле вводится его месяц (в случае с февралем - месяц-год), в котором в соответствии с календарем нет введенного числа, то автоматически исправлять его на максимальное число этого месяца (в случае с февралем - месяца-года). - Третья и четвертая введенные цифры не могут составлять вместе как двухзначное число менее 1 или более 12.
Если в третий и четвертый символ вводится число 00, то автоматически исправлять его на 01.
Если в третий и четвертый вводится число более 12, то автоматически исправлять его на 12. - Если в пустое поле был наведен курсор и далее сразу было нажато Enter или Tab или сразу курсор был выведен из поля, то автоматически заполнять поле текущей датой.
- Если в поле был наведен курсор, далее в поле был введен только 0 и далее сразу было нажато Enter или Tab или курсор был выведен из поля, то автоматически заполнять поле датой с днем, соответствующим 1, с текущим месяцем и текущим годом.
- Если в поле был наведен курсор, далее в поле была введена только одна цифра, отличная от нуля, и далее сразу было нажато Enter или Tab или курсор был выведен из поля, то автоматически заполнять поле датой с днем, соответствующим введенной цифре, с текущим месяцем и текущим годом.
- Если в поле был наведен курсор, далее в поле было введено только две цифры и далее сразу было нажато Enter или Tab или курсор был выведен из поля, то автоматически заполнять поле датой с днем, соответствующим введенным цифрам как двузначному числу, с текущим месяцем и текущим годом.
- Если в поле был наведен курсор, далее в поле было введено только три цифры, где третья цифра 0, и далее сразу было нажато Enter или Tab или курсор был выведен из поля, то автоматически заполнять поле датой с днем, соответствующим введенным первым двум цифрам как двузначному числу, с текущим месяцем и текущим годом.
- Если в поле был наведен курсор, далее в поле было введено только три цифры, где третья цифра отлична от нуля, и далее сразу было нажато Enter или Tab или курсор был выведен из поля, то автоматически заполнять поле датой с днем, соответствующим введенным первым двум цифрам как двузначному числу, с месяцем, соответствующим введенной третьей цифре, и текущим годом.
- Если в поле был наведен курсор, далее в поле было введено только четыре цифры и далее сразу было нажато Enter или Tab или курсор был выведен из поля, то автоматически заполнять поле датой с днем, соответствующим введенным первым двум цифрам как двузначному числу, с месяцем, соответствующим введенным третьей и четвертой цифрам как двузначному числу, и текущим годом.
- Если в поле был наведен курсор, далее в поле было введено только пять цифр и далее сразу было нажато Enter или Tab или курсор был выведен из поля, то автоматически заполнять поле датой с днем, соответствующим введенным первым двум цифрам как двузначному числу, с месяцем, соответствующим введенным третьей и четвертой цифрам как двузначному числу, и годом, соответствующим введенной пятой цифре и увеличенным на 2000.
- Если в поле был наведен курсор, далее в поле было введено только шесть цифр и далее сразу было нажато Enter или Tab или курсор был выведен из поля, то автоматически заполнять поле датой с днем, соответствующим введенным первым двум цифрам как двузначному числу, с месяцем, соответствующим введенным третьей и четвертой цифрам как двузначному числу, и годом, соответствующим введенным пятой и шестой цифрам как двузначному числу и увеличенным на 2000.
- Если в поле был наведен курсор, далее в поле было введено только семь цифр и далее сразу было нажато Enter или Tab или курсор был выведен из поля, то автоматически заполнять поле датой с днем, соответствующим введенным первым двум цифрам как двузначному числу, с месяцем, соответствующим введенным третьей и четвертой цифрам как двузначному числу, и годом, соответствующим введенным пятой, шестой и седьмой цифрам как трехзначному числу и увеличенным на 2000.
- Если в поле был наведен курсор, далее в поле было введено восемь цифр, последние четыре из которых нули, и далее сразу было нажато Enter или Tab или курсор был выведен из поля, то автоматически заполнять поле датой с днем, соответствующим введенным первым двум цифрам как двузначному числу, с месяцем, соответствующим введенным третьей и четвертой цифрам как двузначному числу, и текущим годом.
- В перечисленных алгоритмах автоисправление всегда исполняется первичнее автодозаполнения.
- Примеры автоисправлений и автодозаполнений:
Если понравилось - смело внедряйте в код. Пользователь будет вам благодарен.
Если есть замечания или дополнения - пишите в комментариях.