Здравствуйте! Делаю проверку на введенные символы в поле логин на стороне клиента. Нужно чтобы при введение русских символов отображалась ошибка, использую такой код:
$(document).ready(function() {
$('#signupur-login').keyup(function(){
if($(this).val() != '') {
var pattern = /[a-zA-Z0-9]/;
if(pattern.test($(this).val())){
$(this).css({'border' : '1px solid #ebebeb'});
$('#valid').text('');
} else {
$(this).css({'border' : '1px solid #ff0000'});
$('#valid').text('Только латинские символы и цифры');
}
} else {
$(this).css({'border' : '1px solid #ff0000'});
$('#valid').text('Поле не должно быть пустым');
}
});
});
Дело в том, что этот код работает неправильно, если сначала ввести кирилицу, то поле подсветится, но если потом сразу начать вводить латиницу, то ошибка пропадает. Как заставить проверять не только последний введенный символ, но и всю строку целиком?
Неправильный шаблон регулярного выражения. В вашем случаи строка проверяется на наличие латинской буквы или цифры. Соответвенно, логично то поведение, что вы описываете, и как только выводится латинская буква или цифра - всегда будет true
Надо изменить шаблон, например на такой:
/^[a-z0-9]+$/i
Где ^
- начало строки, затем [a-z0-9]
- латинская буква или цифра, +
- сколько угодно раз встречающиеся в строке, $
- конец строки. Флаг i
игнорирует зависимость от регистра. То есть S
и s
будет считаться одним и тем же.
Также, вместо keyup
лучше будет использовать input
. Так как, например, "вставить текст пкм" keyup
не отловит.
Итого, ваш пример:
$(document).ready(function() {
$('#signupur-login').on('input', function() {
if ($(this).val() != '') {
var pattern = /^[a-z0-9]+$/i;
if (pattern.test($(this).val())) {
$(this).css({
'border': '1px solid #ebebeb'
});
$('#valid').text('');
} else {
$(this).css({
'border': '1px solid #ff0000'
});
$('#valid').text('Только латинские символы и цифры');
}
} else {
$(this).css({
'border': '1px solid #ff0000'
});
$('#valid').text('Поле не должно быть пустым');
}
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.1/jquery.min.js"></script>
<input type="text" id="signupur-login">
<div id="valid"></div>
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Добрый день, не могу понять в чем проблема с функцией targetSortElement, по сути эта функция должна конкатить и слайсить выбранные чекбоксы, но оно...
Использую Google ComboChartЗадача состоит в том, чтобы при зуме подгружались новые данные и график отрисовывался заново
Здравствуйте! Запускаю php из командной строки windowsPHP скрипт выводит в cmd надпись "Loading