|
804 | 804 | break; |
805 | 805 |
|
806 | 806 | case 'twitter': |
| 807 | + // первичная проверка на "пустое" поле ввода (выход из проверки соответствия) |
807 | 808 | if (target.value === '') { |
808 | | - errors.length = 0; |
| 809 | + invalidFeed.textContent = ''; |
| 810 | + target.classList.remove('is-invalid'); |
809 | 811 | break; |
810 | 812 | } |
811 | | - if (!/^@[a-zA-Z0-9_]+$/.test(target.value)) { |
| 813 | + |
| 814 | + // ряд проверок для вводимых данных (определённые условия для ввода) |
| 815 | + if (/\s/.test(target.value)) { |
| 816 | + errors.push('Пробелы недопустимы!'); // исключение пробелов |
| 817 | + target.classList.add('is-invalid'); |
| 818 | + invalidFeed.textContent = 'Пробелы недопустимы!'; |
| 819 | + } |
| 820 | + // только английские буквы |
| 821 | + else if (/[а-яА-ЯёЁ]/.test(target.value)) { |
| 822 | + errors.push( |
| 823 | + 'Некорректный ввод! Измените раскладку клавиатуры!' |
| 824 | + ); |
| 825 | + target.classList.add('is-invalid'); |
| 826 | + invalidFeed.textContent = |
| 827 | + 'Некорректный ввод! Измените раскладку клавиатуры!'; |
| 828 | + } |
| 829 | + // определение корректного ввода/никнейма |
| 830 | + else if (/[^a-zA-Z0-9@_\-.$]/.test(target.value)) { |
812 | 831 | errors.push( |
813 | 832 | 'Укажите корректное имя пользователя, например: @Im_123' |
814 | 833 | ); |
| 834 | + target.classList.add('is-invalid'); |
| 835 | + invalidFeed.textContent = |
| 836 | + 'Укажите корректное имя пользователя, например: @Im_123'; |
| 837 | + } |
| 838 | + // исключение ввода более двух точек |
| 839 | + else if ((target.value.match(/\./g) || []).length > 0) { |
| 840 | + errors.push('Имя пользователя не может содержать точки!'); |
| 841 | + target.classList.add('is-invalid'); |
| 842 | + invalidFeed.textContent = |
| 843 | + 'Имя пользователя не может содержать точки!'; |
| 844 | + } |
| 845 | + // исключение ввода более трёх тире |
| 846 | + else if ((target.value.match(/-/g) || []).length > 3) { |
| 847 | + errors.push( |
| 848 | + 'Имя пользователя не может содержать более трёх тире!' |
| 849 | + ); |
| 850 | + target.classList.add('is-invalid'); |
| 851 | + invalidFeed.textContent = |
| 852 | + 'Имя пользователя не может содержать более трёх тире!'; |
| 853 | + } |
| 854 | + // исключение ввода более десяти нижних подчёркиваний |
| 855 | + else if ((target.value.match(/_/g) || []).length > 10) { |
| 856 | + errors.push( |
| 857 | + 'Имя пользователя не может содержать более десяти подчёркиваний!' |
| 858 | + ); |
| 859 | + target.classList.add('is-invalid'); |
| 860 | + invalidFeed.textContent = |
| 861 | + 'Имя пользователя не может содержать более десяти подчёркиваний!'; |
| 862 | + } |
| 863 | + // определение максимальной длины имени пользователя |
| 864 | + else if (target.value.length > 15) { |
| 865 | + errors.push( |
| 866 | + 'Имя пользователя должно быть не более 15 символов!' |
| 867 | + ); |
| 868 | + target.classList.add('is-invalid'); |
| 869 | + invalidFeed.textContent = |
| 870 | + 'Имя пользователя должно быть не более 15 символов!'; |
| 871 | + } |
| 872 | + // определение с чего должен начинаться имя пользователя |
| 873 | + else if (!/^[@]/.test(target.value)) { |
| 874 | + errors.push( |
| 875 | + 'Имя пользователя должно начинаться только со знака "@"!' |
| 876 | + ); |
| 877 | + target.classList.add('is-invalid'); |
| 878 | + invalidFeed.textContent = |
| 879 | + 'Имя пользователя должно начинаться только со знака "@"!'; |
| 880 | + } |
| 881 | + // если всё корректно (сообщений нет) |
| 882 | + else { |
| 883 | + invalidFeed.textContent = ''; |
| 884 | + target.classList.remove('is-invalid'); |
815 | 885 | } |
816 | 886 | break; |
817 | 887 |
|
|
0 commit comments