Странная проверка соответствия регулярного выражения.
Доброго времени суток, уважаемые форумчане!
Сразу к делу: <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, время: 23:48. |