Показать сообщение отдельно
  #1 (permalink)  
Старый 16.06.2013, 19:53
Профессор
Отправить личное сообщение для Bond Посмотреть профиль Найти все сообщения от Bond
 
Регистрация: 16.06.2013
Сообщений: 172

Некоректная работа .test()
Здравствуйте. Решил написать функцию валидации полей формы вот код
function valid(a){
	$('.names').blur(function(){
		var vall = $(this).val(); //Снимаем значение поля
		var	rezult = (a).test(vall); //Сравниваем с регуляркой
			alert(rezult);
	});}
valid((/^[а-я\-]+$/ig) ); //Вызываем функцию

Как видно из кода переменной а передаю регулярку.
Так вот если сделать как написано сейчас при срабатывании события blur() alert будет попеременно выдавать то true то false - это при том что значение поля не меняется.
А если сделать так
function valid(){
	$('.names').blur(function(){
		var vall = $(this).val(); //Снимаем значение поля
		var	rezult = (/^[а-я\-]+$/ig).test(vall); //Сравниваем с регуляркой
			alert(rezult);
	});}
valid(); //Вызываем функцию

То есть регулярку прописать в функции то работает нормально.
Но нужно реализовать первый вариант так как для каждого поля разные регулярные выражения.
Код написан сокращенно - типа отладочного что бы не парится с ненужными строками.
Буду признателен за помощь.
Ответить с цитированием