Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #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(); //Вызываем функцию

То есть регулярку прописать в функции то работает нормально.
Но нужно реализовать первый вариант так как для каждого поля разные регулярные выражения.
Код написан сокращенно - типа отладочного что бы не парится с ненужными строками.
Буду признателен за помощь.
Ответить с цитированием
  #2 (permalink)  
Старый 16.06.2013, 20:14
Профессор
Отправить личное сообщение для mta88 Посмотреть профиль Найти все сообщения от mta88
 
Регистрация: 16.05.2013
Сообщений: 229

звучит интересно, но не получилось воспроизвести
выложите где-нибудь полный пример пожалуйста
Ответить с цитированием
  #3 (permalink)  
Старый 16.06.2013, 20:29
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,112

Bond,
используйте полную форму записи RegExp а не литеральную
function valid(a){
       alert(a);
       var vall = 'тест-тест'; //Снимаем значение поля
	   var	rezult = (a).test(vall); //Сравниваем с регуляркой
			alert(rezult);
       var vall = 'тест-test'; //Снимаем значение поля
	   var	rezult = (a).test(vall); //Сравниваем с регуляркой
			alert(rezult);
	}
valid(new RegExp("^\[а-я\\-\]\+\$","ig") ); //Вызываем функцию
Ответить с цитированием
  #4 (permalink)  
Старый 16.06.2013, 20:37
Профессор
Отправить личное сообщение для Bond Посмотреть профиль Найти все сообщения от Bond
 
Регистрация: 16.06.2013
Сообщений: 172

<!doctype html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
</head>
<body>
	<form action="">
		<input type="text" name="names" class="names" >
		<input type="submit">
	</form>
	<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"  type="text/javascript"></script>
	<script>
	$(document).ready(function(){
	function valid(a){
	$('.names').blur(function(){
		var vall = $(this).val(); //Снимаем значение поля
		var	rezult = (a).test(vall); //Сравниваем с регуляркой
			alert(rezult);
	});}
	valid((/^[а-я\-]+$/ig) );
});
	</script>
</body>
</html>

Вот полный код на котором можно протестить. Если ввести по регулярке правильное значение в поле (русские буквы и дефис) то при инициировании события blur() alert будет попеременно выдавать то true то false/
Использование полной записи RegExp не спасает ситуэйшн.

Последний раз редактировалось Bond, 16.06.2013 в 20:40.
Ответить с цитированием
  #5 (permalink)  
Старый 16.06.2013, 20:47
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Модификатор g убери
Ответить с цитированием
  #6 (permalink)  
Старый 16.06.2013, 20:56
Профессор
Отправить личное сообщение для Bond Посмотреть профиль Найти все сообщения от Bond
 
Регистрация: 16.06.2013
Сообщений: 172

Сообщение от danik.js
Модификатор g убери
Спасибо, работает
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
работа менеджером georgi Работа 1 29.03.2013 14:18
некоректная работа image load в сафари и хроме dadli Общие вопросы Javascript 9 28.08.2012 22:59
Сортировка. Некоректная работа с числами formus Events/DOM/Window 9 19.11.2011 01:48
Постоянная работа / Front-end / Москва kooper Работа 4 29.09.2011 22:06
jqgrid некоректная работа "родных" кнопок навигации skalka jQuery 0 06.10.2010 11:31