bo4kov
Продвинутый
Дата регистрации:
11.06.2012 11:21:31
Сообщений: 65
Почему не подсвечивает поле в форме?
Например есть такое поле:
<input type="text" id="name" name="name" class="someClass">
И есть js:
$("#name".change(function(){
name = $("#name".val();
var expName = /^[а-яёЁіІ \-]{2,30}$/gi;
var resName = name.search(expName);
if(resName == -1){
$("#name".next().hide().text("".css("color","red".fadeIn(400);
$("#name".removeClass().addClass("inputRed"
$("#login_result".fadeTo(200,0.1,function(){
$(this).html('У нас принято использовать настоящее имя, фамилию и отчество!').removeClass().addClass('error').fadeTo(900,1);
});
nameStat = 0;
buttonOnAndOff();
}else{
$("#name".removeClass().addClass("inputGreen"
$("#name".next().text(""
$("#login_result".removeClass('error').fadeOut(1);
nameStat = 1;
buttonOnAndOff();
}
});
$("#name".keyup(function(){
$("#name".removeClass();
$("#name".next().text(""
});
$('#name').each(function() {
$('#name').val('');
});
Когда в поле вводишь например цифры то оно подсвечивается красным, а если вводиш имя русскими буквами - то подсвечивается зелюным. Это все прекрасно работает, НО когда пользователь ввел имя русскими буквами, поле подсветилось зеленым, и пользователь захотел изменить уже правильный вариант на правильный новый вариант(например было Иван, а изменил на Олег), то поле уже зеленным не подсвечивается. Так вот, как сделать чтобы поле подсвечивалось?
Admin
Администратор
Дата регистрации:
27.05.2010 21:23:42
Сообщений: 3063
Попробуйте функцию проверки вызывать через равные интервалы времени, а не по изменению текстового поля.
bo4kov
Продвинутый
Дата регистрации:
11.06.2012 11:21:31
Сообщений: 65
Можете написать пример?
Admin
Администратор
Дата регистрации:
27.05.2010 21:23:42
Сообщений: 3063
Имеется в виду вот так вызывать некую функцию check(), которая будет периодически проверять, что ввел пользователь.
setInterval(function(){check()}, 3000);
bo4kov
Продвинутый
Дата регистрации:
11.06.2012 11:21:31
Сообщений: 65
Почемуто не работает. Я правильно прописываю?
$("#name"
.setInterval(function(){check()}, 3000);
Если не правильно, то исправте пожалуйста.
Admin
Администратор
Дата регистрации:
27.05.2010 21:23:42
Сообщений: 3063
Нет, должно быть именно так, как я написал. Только вместо функции check() подставляете свой обработчик. Он и будет вызываться с заданным интервалом.
bo4kov
Продвинутый
Дата регистрации:
11.06.2012 11:21:31
Сообщений: 65
Admin
Администратор
Дата регистрации:
27.05.2010 21:23:42
Сообщений: 3063
Интервал теперь правильно задали. Значит Ваша функция проверки не выполняется. Можете проверить алертом, вызывается ли она каждую секунду.
bo4kov
Продвинутый
Дата регистрации:
11.06.2012 11:21:31
Сообщений: 65
Я проверил алертом все работает? alert высвечивается каждую секунду, а как мне сделать чтобы поле подсвечивалось? Где моя ошибка?
Admin
Администратор
Дата регистрации:
27.05.2010 21:23:42
Сообщений: 3063
Если Вы делаете через интервал, то Ваш обработчик переделать придется. $(element).change уже не нужны. Ещё не обязательно вообще весь функционал вызывать через таймер, а только ту часть, которая у Вас не хотела обновляться.