Некоректная работа .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(); //Вызываем функцию То есть регулярку прописать в функции то работает нормально. Но нужно реализовать первый вариант так как для каждого поля разные регулярные выражения. Код написан сокращенно - типа отладочного что бы не парится с ненужными строками. Буду признателен за помощь. |
звучит интересно, но не получилось воспроизвести
выложите где-нибудь полный пример пожалуйста |
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") ); //Вызываем функцию |
<!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 не спасает ситуэйшн. |
Модификатор g убери
|
Цитата:
|
Часовой пояс GMT +3, время: 06:07. |