Странная проверка соответствия регулярного выражения.
Доброго времени суток, уважаемые форумчане!
Сразу к делу: <input type="text" class="BossInp" id="BossFam" /> $('.BossInp').change(function(){ var RegBoss = /[a-zA-Zа-яА-ЯёЁ]{3,20}$/gi; var BossIn = $('.BossInp').val(); var result = RegBoss.test(BossIn); var BossFaml = $('#BossFam').val(); var BossFamRes = RegBoss.test(BossFaml); }); Имеется несколько тегов инпут, объединенных в класс BossInp и имеющих уникальные ID. Задача скрипта в проверке соответствия содержимого тегов <input type="text" /> регулярному выражению RegBoss. Странность (по крайней мере для моего печального понимания js) в том, что в случае с "var result = RegBoss.test(BossIn);" проверка проходит корректно. Но "var BossFamRes = RegBoss.test(BossFaml);" возвращает false в любом случае. Весь мозг себе сломал и вынужден беспокоить Вас. Благодарю за понимание! |
Потому что var
BossIn = $('.BossInp').val(); возвращает набор данных из которого берется первый элемент, а $('#BossFam').val();возвращает значение конкретного инпута с id BossFam. Возможно, этот инпут не идет первым в наборе, возвращаемым var BossIn = $('.BossInp').val(); Советую вывести отладочные сообщения на экран типа alert(BossIn); alert(BossFaml); |
Цитата:
скрипт повешен на собитие изменения в классе. и проверяет, на сколько я понимаю, текущий элемент т.к. протестировал остальные поля ввода. Alert - пробовал, от куда и знаю значения. Могу, конечно написать аналогичные функции для всех 18 полей, но хотелось бы поступить разумнее) |
Tesla,
$('.BossInp').change(function(){ var RegBoss = /[a-zA-Zа-яА-ЯёЁ]{3,20}$/gi; var BossIn = this.value; var result = RegBoss.test(BossIn); alert(result) }); |
Тогда уберите глобальный поиск в регулярке. Это происходит, потому что свойство lastindex равно длине строки и регулярное выражение сопоставляется с пустой строкой. Подробнее https://developer.mozilla.org/ru/doc...gExp/lastIndex
var RegBoss = /[a-zA-Zа-яА-ЯёЁ]{3,20}$/i; <input type="text" class="BossInp" id="BossFam" value="AAA" /> <script src="http://code.jquery.com/jquery-latest.min.js"></script> <script> var RegBoss = /[a-zA-Zа-яА-ЯёЁ]{3,20}$/i; var BossIn = $('.BossInp').val(); var result = RegBoss.test(BossIn); var BossFaml = $('#BossFam').val(); var BossFamRes = RegBoss.test(BossFaml); alert(result); alert(BossFamRes); </script> |
Цитата:
Вы просто гений :) |
Часовой пояс GMT +3, время: 11:13. |