2013-04-18 4 views
0

У меня есть прецедент, где мне нужно сопоставить строку на основе regEx. Ввод находится в dojo ValidationTextBox, где мне нужно добавить regEx для соответствия определенной строке. Строка, подлежащая согласованию, предназначена для полосы пропускания. Для, например: 100 Мбит, 1 Гбит, 10 Kbps и т.д. Это регулярное выражение работы: [1-9][0-9]*[ ][M|K|G|T][b][p][s]Как проверить dojo TextBox на основе regEx после завершения ввода

Однако текстовое поле проверки бросает ошибку, как и когда я начинаю печатать, так как строка еще не завершена. Предполагая, что значение, которое я хочу добавить, составляет «100 Мбит/с», как только я вхожу в «1», ошибка отображается, так как regEx не сопоставляется.

Как я могу сделать проверку текстового поля после окончания ввода ?.

+0

Какую версию Dojo вы используете и какой браузер? Я попробовал ваш пример, и он не дал мне никакой ошибки вообще (если я не набрал что-то вроде «jsldk», которое никогда не могло совпадать ** ИЛИ **, когда я покидал текстовое поле). Я даже сделал JSFiddle, чтобы проверить его http://jsfiddle.net/axjPB/ – g00glen00b

+0

Dojo Version 1.7. Любой браузер. – Rakesh

+0

В любом случае это может быть из-за вышележащей библиотеки, которую я использую поверх dojo. Был один API для проверки подмножеств, и я поставил свою логику там, и он работает сейчас. «_isValidSubset» - не уверен, что находится в додзё. – Rakesh

ответ

0

Мы использовали нашу собственную библиотеку на верхнем Dojo. Мы нашли решение, проверив, была ли введенная строка подстрокой регулярного выражения (начиная с самого левого) каждый раз, когда пользователь вводил некоторый символ, и как только фокус удаляется, мы проверяем всю строку с помощью регулярного выражения.

-1

Вы закончили печатать после ввода окончательного «bps». Сначала я должен проверить, что последние 3 символа (получить подстроку) на самом деле являются «bps» перед запуском регулярного выражения.

+0

Есть еще один критерий. Если я введу какую-то недействительную строку, скажем # $% ^% ", она должна немедленно выбросить недопустимую ошибку. Если я подожду до« бит/с », я также мог бы ввести« @ # @ # @ bps », что в конечном итоге потерпит неудачу , но я не буду немедленно уведомляться – Rakesh

Смежные вопросы