Модераторы: Sardar, Aliance

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Управляемый ввод, система проверки полей ввода 
:(
    Опции темы
ksnk
Дата 4.5.2007, 19:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 2
Всего: 386



Пожелание. Выкладывайте, pls, работоспособный HTML, который может продемонстрировать работу скрипта. Заставлять народ напрягаться и генерировать нетривиальный тестовый стенд - нечеловеколюбиво ;) Вот, вредный Я придумал такой пример  smile 
Код

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<title>Untitled Document</title>
<script type="text/javascript" src="operatedInput021.js"></script>
</head>

<body>
<input name="Name" style="float:right;" type="text" value="" id="unp1">
</body>
 
<script type="text/javascript">
    operatedInput('unp1','(/000)000-00-00'); //назначение проверки
</script>
</html>


Из багов, которые бросились в глаза.
  • Del в FF не работает
  • после Del в IE нельзя вставить ничего
Цитата(Alex_B @  4.5.2007,  18:04 Найти цитируемый пост)
А можно пример.
 "Автозаполнение" - штука, над которой нужно подумать, простыми Reg'ами не сделать, так что пока - посмотрим / подумаем smile



--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
Alex_B
Дата 4.5.2007, 19:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 122
Регистрация: 24.4.2007

Репутация: 1
Всего: 1



Цитата(ksnk @ 4.5.2007,  19:13)
Из багов, которые бросились в глаза.[LIST]
[*]Del в FF не работает
[*]после Del в IE нельзя вставить ничего

О! про дел я вообще забыл...
PM MAIL   Вверх
ksnk
Дата 4.5.2007, 19:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 2
Всего: 386



Вообще, кажется, что отдельно такая фенечка не очень интересна. Ее нужно собирать в комплекте с каким-нибудь ToolTip'ом, чтобы демонстрировать ошибки ввода не калеча дизайн...


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
Alex_B
Дата 4.5.2007, 20:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 122
Регистрация: 24.4.2007

Репутация: 1
Всего: 1



Цитата(ksnk @ 4.5.2007,  19:48)
Вообще, кажется, что отдельно такая фенечка не очень интересна. Ее нужно собирать в комплекте с каким-нибудь ToolTip'ом, чтобы демонстрировать ошибки ввода не калеча дизайн...

Совершенно согласен.
ToolTip отложил до лучших времен. Функция вывода подскаски вынесена отдельно её будет легко заменить.


Я тут подумал вот о чем:
насколько необходимо эранирование?


Слишком ного оно геморая вызывает. Может вообще от него отказаться? Зарезервировать несколько символов как специальные.
И тогда все будет очень просто - никаких ведений историй, никаких массивов, проблем со стиранием backspace и del.

Останется только ToolTip прикрутить да пару тройку правил добави


И тогда вопрос:
Какие правила нужны?
(может их будет порядка пяти, тогда я думаю можно будет найти зянять несколько символов как специаяльные без потери функциональности)

Пока вижу 4 правила:
-только цифра
-только буква
-только русская буква
-верхний регистр, возможен автоматический перевод в вверхний регистр. (например для первой буквы в поле для ввода фамилии)

Это сообщение отредактировал(а) Alex_B - 4.5.2007, 20:55
PM MAIL   Вверх
AKS
Дата 5.5.2007, 07:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Участник форума
**


Профиль
Группа: Участник
Сообщений: 725
Регистрация: 20.9.2006

Репутация: 2
Всего: 52



Alex_B, у меня нет, к сожалению, ответов на ваши концептуальные вопросы, но вот по коду кое-что есть. Вы так и оставили функцию check внутренней по отношению operatedInput. А ведь возможно же, что кому-то захочется вызвать operatedInput несколько раз для разных текстовых полей? Если такое произойдет - при каждом вызове будет создаваться новая функция check (своя, так сказать, для каждого поля). А зачем?
PM MAIL   Вверх
Alex_B
Дата 5.5.2007, 12:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 122
Регистрация: 24.4.2007

Репутация: 1
Всего: 1



AKS, спасибо!
PM MAIL   Вверх
ksnk
Дата 5.5.2007, 15:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 2
Всего: 386



Не знаю, насколько это будет интересно, но вот кусочек документации из довольно прилично развитой системы "шаблонного" ввода. Тут только placeholder'ы для цифр...
Код

Custom Formats
Custom number formats can have one to four sections with semicolons (;) as the list separator. Each section contains the format specification for a different type of number.

Section Description 
First The format for positive numbers. 
Second The format for negative numbers. 
Third The format for zero values. 
Fourth The format for Null values. 


For example, you could use the following custom Currency format:

$#,##0.00[Green];($#,##0.00)[Red];"Zero";"Null"
        
This number format contains four sections separated by semicolons and uses a different format for each section.

If you use multiple sections but don't specify a format for each section, entries for which there is no format will either display nothing or default to the formatting of the first section.

You can create custom number formats by using the following symbols.

Symbol Description 
. (period) Decimal separator. Separators are set in the regional settings in Windows. 
, (comma) Thousand separator. 
0 Digit placeholder. Display a digit or 0. 
# Digit placeholder. Display a digit or nothing. 
$ Display the literal character "$". 
% Percentage. The value is multiplied by 100 and a percent sign is appended. 
E– or e– Scientific notation with a minus sign (–) next to negative exponents and nothing next to positive exponents. This symbol must be used with other symbols, as in 0.00E–00 or 0.00E00. 
E+ or e+ Scientific notation with a minus sign (–) next to negative exponents and a plus sign (+) next to positive exponents. This symbol must be used with other symbols, as in 0.00E+00. 

Еще не страшно?  smile 




--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
Alex_B
Дата 5.5.2007, 17:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 122
Регистрация: 24.4.2007

Репутация: 1
Всего: 1



ksnk, такая документация и уменя самого есть.  smile 

Вопрос в том, что конкретно может понадобиться для веба?
(вводить телефон, номер паспорта, ФИО - для этого вполне хватит и 4-х правил, которые написаны выше)
PM MAIL   Вверх
ksnk
Дата 5.5.2007, 18:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 2
Всего: 386



Alex_B, Для веба может понадобится все... Деньги, числа (вещественные, в том числе; в разной локали, о ужас!!!), даты ...
Впрочем - делать сразу "на все" - не разумно... Нужно обеспечить достаточно гибкую расширяемость, имея ввиду потенции "больших" систем, и сделать маленькое подмножество, нужное конкретно сейчас. 

Некоторые данные могут бросаться copy-paste'ом, так что гарантировать корректность ввода "побуквенно" - не выйдет.


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
Alex_B
Дата 5.5.2007, 20:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 122
Регистрация: 24.4.2007

Репутация: 1
Всего: 1



ksnk, да... проблема..
Я сейчас попробовал как это сделано у Borland, там если copy-paste'ом встявлять подходящие символы, они вставляются. Если не подходящие, то курсор ввода сдвигается на число вводимых символов но на их местах остаются пробелы.

Как вариант, можно вообще запретить copy-paste.

Это сообщение отредактировал(а) Alex_B - 5.5.2007, 20:21
PM MAIL   Вверх
AKS
Дата 5.5.2007, 20:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Участник форума
**


Профиль
Группа: Участник
Сообщений: 725
Регистрация: 20.9.2006

Репутация: 2
Всего: 52



Цитата(Alex_B @  5.5.2007,  20:20 Найти цитируемый пост)
Как вариант, можно вообще запретить copy-paste.

А может вместо запрета попытаться обработать событие onchange? Проверить регэкспом и оставить лишь валидный фрагмент строки (т.е. кусок строки до первого несоответствия).

PM MAIL   Вверх
ksnk
Дата 5.5.2007, 22:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 2
Всего: 386



AKS, можете предложить вариант регескпа, который с одной строны не был бы велик и ужасен по размеру. а с другой стороны обеспечиват проверку валидности как всей строк , так и "выкусывание" валидных частей... smile

Вряд ли для этого подойдет Regexp. Скорее всего придется городить свой парсер, как вот здесь.


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
AKS
Дата 6.5.2007, 05:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Участник форума
**


Профиль
Группа: Участник
Сообщений: 725
Регистрация: 20.9.2006

Репутация: 2
Всего: 52



Цитата(ksnk @  5.5.2007,  22:25 Найти цитируемый пост)
можете предложить вариант регескпа

Нет, не могу. В регах у меня (как некоторые выражаются) "уровень: для самых маленьких". smile Но, тем не менее, я бы "попытал счастья"...

PM MAIL   Вверх
Alex_B
Дата 6.5.2007, 13:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 122
Регистрация: 24.4.2007

Репутация: 1
Всего: 1



operatedInput v0.2.3
(для тестирования)

Изменения:
(по сравнению с operatedInput v0.2.1)
Добавлена функция searchMaskShant поиска позиции курсора в маске по количеству символов в поле ввода.
Значит проблема удаления символов клавишей Backspace решена. В связи с этим больше нет ведения историй и двух массивов.
Кода стало меньше, логика упростилась

По замечанию ksnk, что система должна быть гибкой и легко расширяемой, экранирование сохранено.

ToDo List
Необходимо вынести функцию check из функции operatedInput (рекомендация AKS).
Решить вопрос стирания клавишей del, ровно, как и ввод символа не в конец строки в поле ввода. Для этого необходимо узнать местоположение курсора в поле ввода и передать его функции searchMaskShant.


Это сообщение отредактировал(а) Alex_B - 6.5.2007, 13:57

Присоединённый файл ( Кол-во скачиваний: 13 )
Присоединённый файл  operatedInput023.zip 1,50 Kb
PM MAIL   Вверх
ksnk
Дата 6.5.2007, 18:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 2
Всего: 386



Не вдаваясь сильно в логику приложения, переписал, действительно учитывая пожелания звучавшие в этой ветке smile 


Это сообщение отредактировал(а) ksnk - 6.5.2007, 18:39

Присоединённый файл ( Кол-во скачиваний: 34 )
Присоединённый файл  operatedinput.zip 2,49 Kb


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
Страницы: (4) Все 1 [2] 3 4 
Ответ в темуСоздание новой темы Создание опроса
Здесь публикуют скрипты, которые уже проверены в обсуждениях других тем (при этом полезно поставить ссылки на все смежные обсуждения) или переносятся кем-либо из модераторов по просьбе участников, если видно, что в результате обсуждения темы был написан полезный или интересный скрипт. Третий возможный вариант - участник форума публикует скрипт, заведомо известный как полезный и эффективный, для, возможно, небольшой доработки и обсуждения.
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Наши скрипты | Следующая тема »


 




[ Время генерации скрипта: 0.0973 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.