| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > JavaScript: Общие вопросы > Контроль ввода |
| Автор: magelan 21.5.2012, 12:20 | ||
| Столкнулся с проблемой - не дать пользователю вводить неправильные символы, либо перекодировать на лету, невзирая на выбор языка. Первый подход с RegExp дал неутешительные результаты, современные браузеры на быстрых машинах проглатывают события, в результате не весь набор пользователя правильно прилетает. RegExp возможно использовать, если кешировать ввод, а регулярку применять время от времени. Однако выяснилось, что при работе с массивами, все браузеры успевают. Как не печально, нормального решения так и не нашел, хотя проблема казалось бы на поверхности. Привожу рабочий пример, может кому-то будет полезно, оформлять "по модному" не стал, чтобы не запутывать идею.
|
| Автор: ksnk 21.5.2012, 16:13 |
| Если пользоваться jQuery, то e.which присутствует везде. Библиотека дополняет событие полями, если они отсутствуют. А зачем нужно пользоваться selection'ами? Для ускорения фильтрации? Ну и традиционно - никак не защищается cut&paste вставка - самое то, при редактировании блондинками P.S. К тому-же как-то не понимаю надобность контроля за каждым символом. Контроль в конце ввода или по потере фокуса - самое правильное, imho... |
| Автор: Aliance 22.5.2012, 09:19 |
| Будет полезно: http://codeshit.com/post416 |
| Автор: magelan 22.5.2012, 11:05 | ||
В таких особенностях jQuery как which пока плаваю, за инфу спасибо. ИЕ приблизительно в 10 раз тормознее конкурентов в скриптах, поэтому да селекты, для ускорения. На внешнее воздествие задачи нет, т.к. на этих полях еще работает валидация. ага жесть. В обычной жизни я тоже не очень понимал нафига, но задача вводить мультиязычную форму имя/фамилия по русски имя/фамилия по английски... а тут такая штучка, помогает, реально. |
| Автор: magelan 22.5.2012, 11:21 | ||
Благодарю. Хотя скрипты там достаточно древние - хром, например, на document.all проверку пройдет. Для того, чтобы отловить копирование, дропы, и все такое, можно использовать http://www.zurb.com/playground/jquery-text-change-custom-event. Я его пробывал он подгреб все браузеры кроме 9го IE на виндоуз фоне(но это экзотика). Событие от него запаздывает при быстром вводе, для защиты от извне - подойдет, для моей задачи - не очень. |
| Автор: Aliance 22.5.2012, 15:46 |
document.all там используется в единственном месте, которое завязано на описываемой там задачи с tinyMCE, реализация которой конкретно Вам не нужна как я понимаю. Ссылку дал скорее для того чтобы показать какие ситуации нужно обрабатывать и какие события они вызывают. |
| Автор: magelan 23.5.2012, 11:36 | ||||||
Еще раз вам говорю, код древний и писан в плохом стиле. Зачем делить браузеры по половой принадлежности, если без этого можно обойтись? например, зачем писать:
Вы мне хотели рассказать этой статьей про события input, dragdrop, keyup, onpropertychange и DOMCharacterDataModified? Или как? Вы думаете я не знаю, как проверить не положили ли в input что-то из буфера обмена? Вы не смотрели код того элегантного плагина, который я вам привел в ответ? |