Просмотр темы
Страница 1 из 2: 12
|
Беспрецендентно удобная JSфункция валидации полей
|
|
Rikki |
Опубликовано 25.06.2015 10:00
|
Начинающий Сообщений: 48 Зарегистрирован: 20.10.2014 09:09 |
Доброго времени уважаемые форумчане! Предлагаю свою js-функцию валидации полей ввода
примеры использования: протестировать различные поля ввода здесь: http://citr.tk 1) RikkiValidInput(this, /(^(\d+-)*\d+$)/, '', 'input-group has-success', 'input-group', ''); и RikkiValidInput(idOn_number, /(^[0-9]{1,2}([\-]{1}[0-9]{1,5}){3}$)/, '', 'input-group has-success', 'input-group has-error', '');
2) RikkiValidInput(this, /(^[A-ZА-Яa-zа-я0-9№'\(\)\,\.\_\:\s\-]*?$)/, '".$locale['e45']."', 'input-group has-success', '', 'input-group');
3) Ну и с ячейками таблицы: RikkiValidInput(this, /(^[0-9]+$)/, '', 'success', 'danger', '');
Изменил(а) Rikki, 25.06.2015 17:30 |
|
|
Polarfox |
Опубликовано 25.06.2015 15:13
|
Администратор Разработчики Группа поддержки Сообщений: 3387 Зарегистрирован: 20.08.2010 14:03 |
очень сильно зависит от верстки. Всегда делайте backup перед изменениями | Указывайте свою версию в подписи/профиле. | Вся бесплатная тех. поддержка только на форуме
|
|
|
Rikki |
Опубликовано 25.06.2015 16:16
|
Начинающий Сообщений: 48 Зарегистрирован: 20.10.2014 09:09 |
PolarFox, для bootstrapa проверено во всех браузерах) я здесь уже встречала индивидуумов тоже юзающих bootstrap :) вот кусок исходного кода для большей наглядности:
Изменил(а) Rikki, 25.06.2015 16:30 |
|
|
lucky |
Опубликовано 25.06.2015 16:37
|
Опытный пользователь Сообщений: 381 Зарегистрирован: 05.09.2012 10:20 |
|
|
|
Rikki |
Опубликовано 25.06.2015 17:41
|
Начинающий Сообщений: 48 Зарегистрирован: 20.10.2014 09:09 |
lucky, |
|
|
PahaW |
Опубликовано 26.06.2015 02:20
|
Пользователь Сообщений: 117 Зарегистрирован: 16.09.2012 16:38 |
Rikki, alert, конечно, удобен для тестирования, но на мой взгляд не для рабочей версии. Есть пользователи, которые при наборе текста смотря на клавиатуру и печатают медленно, ошибившись где-то по тексту alert не даст набраться текст далее, и им снова придется набирать текст, который они уже набирали на alert'е )) будет вызывать неприязнь. Опять же раздувание input до ужасных размеров и вставку описания ошибки в сам input опять же на мой взгляд дурной тон, а если несколько полей с таким:
Будет проще описать один раз в переменной и выводить только переменные. Просто какие задачи вы ставите этой валидации: сделать ее универсальной или же сделать под конкретные случаи. -----
Лайкай авууууу, авы себя не залайкают |
|
|
Rikki |
Опубликовано 26.06.2015 06:25
|
Начинающий Сообщений: 48 Зарегистрирован: 20.10.2014 09:09 |
PahaW, очистку можно отключить для этого clr='' и алерт можно отключить aler='' Есть пользователи, которые при наборе текста смотря на клавиатуру и печатают медленно для этого регулярки простейшие, исключены только агрессивные знаки ", $, # и тд Порядочный пользователь на них никогда и не нажмет а значит и не увидит алерт и не придется заново набирать, алерты с очисткой это для начинающих кулхацкеров желающих показать что они крутые, мягкий отпор так сказать. Во всех числовых input alert с очисткой пустота, тоесть отключены - это можно проверить у меня на сайтепусть будет лучше длинная строка входных данных функции, чем лишние метры js-скрипта, я раньше писала под конкретные случаи более менее универсальные функции, сейчас все меняю и удаляю, неэффективно, слишком много путанно и не исключена вероятность повторных дублирующих функций засоряющих код что сильно снижает модульность программы а если очистка в числовых полях, то это отдельная функция на onclick мне например проще набрать число заново, это уменьшает вероятность ошибочного ввода, это же не осмысленный текст Если уж так не удобно то очистку можно вызывать на onDblclick
то что вы привели - это уже готовый исходный код, который я привела для того чтобы можно было отследить родителя, а сам php код в первом сообщении $misc_on_number = "onClick=\"clearInput(this, '');\" onKeyup=\"RikkiValidInput(this, /(^(\d+-)*\d+$)/, '', 'input-group has-success', 'input-group', '');\""; echo $RikkiInput->RikkiInputFG('input-group', $locale['search104'], 'idOn_number', 'on_number', '', '20', $locale['search105'], $misc_on_number, ''); echo "<p><input type='submit' name='searchON' class='btn btn-default' value='".$locale['search29']."' onMouseover=\"RikkiValidInput(idOn_number, /(^[0-9]{1,2}([\-]{1}[0-9]{1,5}){3}$)/, '', 'input-group has-success', 'input-group has-error', '');\">\n</p>\n"; вы перед тем как обвинять в друном тоне повнимательней почитали бы первое сообщение Изменил(а) Rikki, 26.06.2015 10:04 |
|
|
PahaW |
Опубликовано 26.06.2015 14:12
|
Пользователь Сообщений: 117 Зарегистрирован: 16.09.2012 16:38 |
Rikki, критика, критика, критика )) я писал: "на мой взгляд дурной тон", значит что это мое мнение и прислушиваться к нему ваше решение ;) На счет php кода, что вы привели, я имел совсем другое. Пример (чтобы код не раздувать):
Массив один раз загрузили и все, а обращаетесь по элементу массива. Я к тому что форма может быть и сложной из нескольких полей и элементов. Если посмотреть самый простой вариант для чата )) красиво и место мала занимает. А забыл сказать про регулярку ее можно занести в другой массив и так же брать из него, опять же при большом количестве элементов, да и чтобы самому не теряться, поправил в одном месте и у тебя во всех нужных местах автоматически подхватывает ;) перед тем как обвинять Желаю бобра Изменил(а) PahaW, 26.06.2015 15:08 -----
Лайкай авууууу, авы себя не залайкают |
|
|
Polarfox |
Опубликовано 26.06.2015 15:03
|
Администратор Разработчики Группа поддержки Сообщений: 3387 Зарегистрирован: 20.08.2010 14:03 |
PahaW, в js ассоциативных массивов нет, есть некие объекты.
Всегда делайте backup перед изменениями | Указывайте свою версию в подписи/профиле. | Вся бесплатная тех. поддержка только на форуме
|
|
|
PahaW |
Опубликовано 26.06.2015 15:11
|
Пользователь Сообщений: 117 Зарегистрирован: 16.09.2012 16:38 |
PolarFox, думал про php, вот и результат, подправил! Кстати, кому будет интересно (ассоциативные массивы): https://learn.javascript.ru/object https://toster.ru/q/12635 -----
Лайкай авууууу, авы себя не залайкают |
|
|
Rikki |
Опубликовано 26.06.2015 15:39
|
Начинающий Сообщений: 48 Зарегистрирован: 20.10.2014 09:09 |
PahaW, вы предлагаете нагрузить массивов, ради красоты строки внутри скрипта? Не знаю как в js, но в php при использовании массивов еще необходима масса безопасных оберток при их создании и обращении к ним, если честно я просто признаюсь я не представляю возможным организовать безопасную работу с массивами на чистом js, да так чтобы это еще выглядело красиво и в одну коротенькую строчку. Масло масляное шеф. Вторая ссылка вообще не внушает доверия, js такой опасный язык, да еще и в формах, через него могут и взломать, другое дело чат, в котором скорей всего все пишется в txt я всегда адекватно отношусь к критике, но дискуссию веду в ключе оппонента, докажите мне что предложенные вами методы безопасны и приведите примерный код я с удовольствием воспользуюсь им и выложу исправленный код функции, если ваш БЕЗОПАСНЫЙ код будет красивее и короче а за идею спасибо я на php кое что сейчас так переделаю Объединено 27.06.2015 06:58: PahaW, ну вот я выполнила ваш метод на php (см. скриншот), это 100% безопасно:
на странице
теперь за вами на javasript/jQuery для моей функции, я не знаю как, сразу говорю или просто предложите свой код а я вот здесь http://javascript... попрошу оценить риски его использования
Rikki присоединено следующее:изображение:
Изменил(а) Rikki, 27.06.2015 07:09 |
|
|
Polarfox |
Опубликовано 27.06.2015 20:06
|
Администратор Разработчики Группа поддержки Сообщений: 3387 Зарегистрирован: 20.08.2010 14:03 |
Rikki, риски по empty еще раз - емпту не замена иссету, и не синоним, это другая функция. Всегда делайте backup перед изменениями | Указывайте свою версию в подписи/профиле. | Вся бесплатная тех. поддержка только на форуме
|
|
|
Rikki |
Опубликовано 28.06.2015 09:07
|
Начинающий Сообщений: 48 Зарегистрирован: 20.10.2014 09:09 |
PolarFox, а как же: empty() фактически является точным эквивалентом конструкции !isset($var) || $var == false вот здесь обсуждаем http://php.ru/for...mp;t=53756 предыдущий код это была болванка, вот окончательный, про empty пока неясно на практике походу никто не выполнял
Изменил(а) Rikki, 28.06.2015 09:47 |
|
|
lucky |
Опубликовано 28.06.2015 11:05
|
Опытный пользователь Сообщений: 381 Зарегистрирован: 05.09.2012 10:20 |
1) конкретно html-разметку под этот js-код можно увидеть? 2) про проверку на php.., мне не понятно для чего делать так: зачем $RIA['pTxt'] проверять два раза, когда нам нужна конкретно не пустая переменная и не равная нулю, следовательно ИМХО вполне достаточно сделать одну проверку на пустоту: даже если $RIA['pTxt'] не существует ошибок ведь не будет и условие нормально отработает, другое дело, когда нам нужно точно знать, что переменная существует, например, когда кнопку нажал, то тут да, необходимо сделать isset(), иначе нажатая кнопка без значения при проверке empty() не прокатит или когда сначала нужно узнать существует ли переменная а уже потом проверить её на пустоту.. или же в переменной нужно пропустить "0" empty() не подходит, ну так зачем в данном случае $RIA['pTxt'] дополнительно проверять на существование? |
|
|
Rikki |
Опубликовано 28.06.2015 11:17
|
Начинающий Сообщений: 48 Зарегистрирован: 20.10.2014 09:09 |
lucky, да все уже на php.ru даже уже модеры подключились, всех достала))) в итоге вот так
клещами все тянуть нужно эхх:) Изменил(а) Rikki, 28.06.2015 12:40 |
|
|
lucky |
Опубликовано 28.06.2015 13:45
|
Опытный пользователь Сообщений: 381 Зарегистрирован: 05.09.2012 10:20 |
lucky, да все уже на php.ru даже уже модеры подключились, всех достала))) что всё?, типа поезд уехал)) а для чего в конце некоторых строк прилепили ".PHP_EOL;" ? просто интересуюсь |
|
|
Rikki |
Опубликовано 28.06.2015 15:06
|
Начинающий Сообщений: 48 Зарегистрирован: 20.10.2014 09:09 |
lucky, ой там такая замута пошла, ну вобщем ты на 100% прав, вот цитирую romachа: Про empty нужно помнить одну вещь: empty('') или empty('0') вернут true, т.ч. если для вас пустая строка или 0 тоже результат, то лучше в данном случае воспользоваться другим способом. И да, для empty() отсутствие переменной тоже является пустотой, а значит делать доп. проверки isset`ом нет необходимости. Короче, все зависит от ситуации, однозначных решений не бывает ) END OF LINE кросплатформенность, вместо \n или \r\n и тому подобное, не надо заморачиваться просто ".PHP_EOL; и все Объединено 28.06.2015 15:57: 1) конкретно html-разметку под этот js-код можно увидеть?
ну вот из исходного кода
Изменил(а) Rikki, 28.06.2015 15:57 |
|
|
lucky |
Опубликовано 28.06.2015 19:18
|
Опытный пользователь Сообщений: 381 Зарегистрирован: 05.09.2012 10:20 |
lucky, ой там такая замута пошла, ну вобщем ты на 100% прав, вот цитирую romachа: Про empty нужно помнить одну вещь: empty('') или empty('0') вернут true, т.ч. если для вас пустая строка или 0 тоже результат, то лучше в данном случае воспользоваться другим способом. И да, для empty() отсутствие переменной тоже является пустотой, а значит делать доп. проверки isset`ом нет необходимости. Короче, все зависит от ситуации, однозначных решений не бывает ) Я тут не причём, всего лишь повторил то, что выше написал про empty() PolarFox END OF LINE кросплатформенность, вместо \n или \r\n и тому подобное, не надо заморачиваться просто ".PHP_EOL; и все спасибо, понял, значит в данном случае она просто для красоты про html-разметку.., там только один input ? просто поиск? с библиотекой jquery я бы примерно так сделал: html: <form id="form-search"> js (для работы требуется подключение jquery): конкретно этот js не проверял (возможно есть синтаксические ошибки), но похожий есть на одном из сайтов, вроде работает нормально данный js проверяет поле на пустоту, кол-во символов и на допустимые символы, если не проходит проверку полю ввода добавляется класс "error" (например пусть это будет красная рамка), а вверху показывается сообщение(конечно, если оно есть), - блок с классом "messages" (разумеется оформить можно как угодно в стилях) Изменил(а) lucky, 28.06.2015 19:51 |
|
|
PahaW |
Опубликовано 29.06.2015 05:26
|
Пользователь Сообщений: 117 Зарегистрирован: 16.09.2012 16:38 |
Rikki, js выполняется на стороне сервера, как вы будете хакать сервер? )) вот если ajax... тут еще можно согласиться на проверки и взлом ) не нравятся массивы попробуйте через case ), вон как пример lucky сделал для поиска, только выборка ошибок -----
Лайкай авууууу, авы себя не залайкают |
|
|
Rikki |
Опубликовано 29.06.2015 07:01
|
Начинающий Сообщений: 48 Зарегистрирован: 20.10.2014 09:09 |
lucky, PahaW, спасибо, попробую с массивами на js чуть позже, щас правлю свой индусский php спасибо, понял, значит в данном случае она просто для красоты получилось автоматически заменой в notepade \n на PHP_EOL, действительно визуально оценить действие перевода строки можно только если писать в файл, а так непонятно зачем fusion везде ставит \n, это отдельная тема по видимому, но мне очень удобно самой видеть где конец строки если в конце стоит PHP_EOL, с моей подсветкой
Rikki присоединено следующее:изображение:
|
|
Поделиться этой темой | |
Социальные закладки: | |
URL: | |
BBcode: | |
HTML: |
Страница 1 из 2: 12
Перейти на форум: |