|
|
|
| Здравствуйте!
Вот такой фрагмент кода изменения текста в инпуте "на лету":
$('#site_name, #full_name, #electromail').bind("keydown keyup", function(){
$(this).val($(this).val().replace(/^\s+/g,''));
$(this).val($(this).val().replace(/\b\s+\b/g,' '));
});
$('#site_name').bind("focusout mouseleave",function() {
$(this).val($(this).val().replace(/\s+$/,''));
$(this).val($(this).val().replace(/[^\w\d_-\sа-яё]/i,'')); // ← проблема
// other code.........
});
|
В общем, суть регулярок - удалять "опасные" символы "на лету", это не проблема.
Проблема вот в чем. Firefox спотыкается на проблемной строке и скрипт не выполняется. Стоит ее экраинровать - скрипт работает. Причем, этот бзик - только в FF. Опера, Хтом, ИЕ - обрабатываю этот код безупречно.
Что тут можно сделать, подскажите.
Спасибо. | |
|
|
|
|
|
|
|
для: Deed
(13.05.2012 в 11:18)
| | Опять вы к лисе с претензиями, а ведь у вас ошибка и это ваша ошибка, и все браузеры ее будут воспринимать как ошибку, игнорировать, обрабатывать неверно. Скажите спасибо лисе, что ваш баг замечает. - надо экранировать, w - класс описывающий латинские символы, цифры и подчеркивание, а значит d_ лишнее, и нужно добавить модификатор g.
| |
|
|
|
|
|
|
|
для: confirm
(13.05.2012 в 12:47)
| | Уважаемый confirm.
ВСЕ браузеры, кроме FF скрипт обрабатывают. За \d - спасибо, я просто невнимательно регулярку составил. А модификатор g я убрал перед публикацией своего вопроса - думал, освобожу пару байт памяти, авось FF угомонится. Не вышло...
Еще раз повторю: ВСЕ браузеры обрабатывают скрипт корректно, КРОМЕ FF 12.0.
Я уже и плагины все отключал у лисы, но все равно, не жрет она скрипт с этой строкой. | |
|
|
|
|
|
|
|
для: Deed
(13.05.2012 в 14:28)
| | Вы уверены, что FF виноват, и не справедлив к вам? А ведь он вам показывает (если конечно вы удосужились бы заглянуть в консоль ошибок), где вы ошиблись.
Вы прописываете диапазон значений а-я (вы понимаете какую роль здесь играет дефис?), и рядом же пытаетесь ввести в заблуждение, непонятным выражением. Не может быть такого диапазона _-\s, он не логичен, и слава богу, что FF это понимает. | |
|
|
|
|
|
|
|
для: confirm
(13.05.2012 в 14:56)
| | +++ | |
|
|
|
|
|
|
|
для: Deed
(13.05.2012 в 15:25)
| | Что сие означает? )
Вот если бы вы написали вот так (оставив все ваше) [^\w\d_\sа-яё-], то и FF бы не заикнулся. Иначе экранирование [^\w\d_\-\sа-яё], и это правильно. | |
|
|
|
|
|
|
|
для: confirm
(13.05.2012 в 15:33)
| | Не успел :)
Спасибо!
Трабл, и правда, был в регулярке! А именно в тире между символьными классами. После перестановки: /[^\w_\sа-яё-]/ig FF прекратил бойкот.
http://jsfiddle.net/j8M7W/2/
Но что-то много у FF фич и особенностей, на мой взгляд. | |
|
|
|
|
|
|
|
для: Deed
(13.05.2012 в 15:37)
| | Это не FF фича, это ваша ошибка - нельзя так, поймите в конце концов. Задайтесь вопросом, почему диапазон a-z это логично, и почему ё надо указывать вне а-я? | |
|
|
|
|
|
|
|
для: confirm
(13.05.2012 в 15:39)
| | Erara humanum est, дружище!
А насчет регулярок - у меня никогда с ними особых проблем не было. Как-то с самого начала пошли они без напряга :)
На ваш вопрос развернуто ответить не могу. Но, вроде как, код кириллической буквы "ё" в ВОМ стоит отдельно от сплошного диапазона остальных букв. | |
|
|
|
|
|
|
|
для: Deed
(13.05.2012 в 16:03)
| | При чем тут ВОМ? Посмотрите код литер a-z и а-я, ё, и все станет понятно. Может после этого вы поймете, что означает диапазон _-\s, и что FF на 100% прав, указывая на такую лажу (кстати в консоль все-таки загляните, поинтересуйтесь содержанием сообщения об ошибке). | |
|
|
|
|
|
|
|
для: confirm
(13.05.2012 в 16:10)
| | Да что ж вы так ругаетесь :)
В консоль посмотреть - это первое дело. В моем случае там была лишь нотация на использование "Устаревшего атрибута AttrNode..."
Кстати, рекомендую: http://gskinner.com/RegExr/desktop/RegExr.air | |
|
|
|
|
 1.2 Кб |
|
|
для: Deed
(13.05.2012 в 16:16)
| | Если бы я начал ругаться...
Специально написал, чтобы показать -->
У вас уже в привычку входит искать виновника среди браузеров. Рег. выражения не они придумали, и если какой-то из них "косячит" не замечая явного "косяка", это еще не повод считать себя правым. Они могут по разному трактовать стили, но рег. выражения, это правила общие для всех. Отвыкайте.
Спасибо, но у меня есть отличные учебники по JavaScript. | |
|
|
|
|
|
|
|
для: confirm
(13.05.2012 в 16:26)
| | Это не учебник, это air-программулинка для теста регулярок. Установки не требует. | |
|
|
|
|
|
|
|
для: Deed
(13.05.2012 в 16:48)
| | Не надо, у меня все это есть в твердой валюте. | |
|
|
|
|
|
|
|
для: confirm
(13.05.2012 в 16:52)
| | Ок! А я ща буду присобачивать выбор "Откуда?" с динамической подгрузкой региона и города.
http://habrahabr.ru/post/21949/ | |
|
|
|