Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Запретить выполнение функций (https://javascript.ru/forum/dom-window/51065-zapretit-vypolnenie-funkcijj.html)

kostyanet 23.10.2014 16:45

И самая мякотка - вы на сервере вообще не проверяете? Собственно если форма не работает по XMLHttp, то и проверять на JS особенно нечего - ушла пустая, с сервера строго сказали - тут не заполнено мать вашу.

Szorstki 23.10.2014 22:00

Цитата:

Сообщение от kostyanet (Сообщение 337147)
Я уже начал сомневаться. Вы action вернули на место? То есть скопипастить дело тоже творческое, понимаете? Я выкосил action формы на всякий случай, ну мало ли там обматерят. Верните если не заметили что его там нет. И главное - кнопка-то активная становится или как?

Дело в том что я ж не могу вам прямо все правильно написать, или давайте ТЗ.

action разумеется вернул. Кнопка становится активной, но не отправляет.
Естественно проверяю на сервере.

Да дело не в ТЗ. Там все просто:
1. В спокойном незаполненном состоянии поля не подкрашиваются, кнопка неактивна.
2. При фокусе поле красное (рамка), кнопка неактивна.
3. Начали писать — рамка зеленая, кнопка неактивна.
4. Все заполнили — соответственно обе рамки зеленых, кнопка стала активной и при нажатии отправляет форму.

Szorstki 23.10.2014 22:08

Если это поможет, на поле телефон висит сторонний скрипт для маски телефона, а на кнопке висит скрипт для всплывающего окна об успешной отправке.

kostyanet 24.10.2014 05:23

Цитата:

Сообщение от Szorstki
В спокойном незаполненном состоянии поля не подкрашиваются, кнопка неактивна.

Так нельзя делать, так не делают, это похоже на наеб...у. Типа все норм, можно жать - нажал, тебя нах послали.

Все что требуется заполнить -- выделяется _сразу_ чтоб было понятно что надо заполнить.

Вы где такой морально-уродский скрипт подцепили?

Почему не отправляет - это вы сами ищите. На сабмите там никаких вообще перехватов, если кнопка активна - то уйдет. Сделайте ее по умолчанию активной и нажимайте как будто все заполнили.

Что касается фильтров телефонов и имен - нафиг там какие-то скрипты еще? Той же самой функцией все, одной, проверяется. Надо только добавить еще одно условие - чтоб регулярное выражение возвращало true, а сам паттерн берется из атрибута pattern. Например для проверки на длину pattern="{3,}" - не менее 3 символов, pattern="{10,11}" от10 до 11.

Есть специальный сайт где коллекционируют эти паттерны. http://html5pattern.com/

Это не значит что только HTML5 браузер поймет - любой, надо только брать var pat = new RegExp(field.getAttibute('pattern'))

kostyanet 24.10.2014 05:26

Цитата:

кнопка неактивна.
Да при чем тут кнопка? С любого ввода типа text по Enter формы отправляются по умолчанию. Юзер может и не знать как выглядит disabled, встал на поле и нажал Ентер. Не важно, так чтобы не показывать где ввод обязательный - делают только моральные уроды.

Знаете как это лечится? Берется такой программист и сажается набивать БД через свой собственный зло...учий интерфейс. Через неделю он все перепишет по-человечески. А пока одни пишут, другие юзают - гавно и случается.

kostyanet 24.10.2014 05:47

С паттернами http://learn.javascript.ru/play/IjR4h

Но там с телефонами я не знаю как вам надо, взял типовой шаблон 123-456-7898

Насчет выдележа рамочками. Конечно не обязательно именно рамочками выделять, звезды можете просто поставить. А чтоб при запуске функция дизаблила, но не разукрашивала (если этого не надо, если есть звезды), то просто проверяйте кто ее вызвал:

if(event.target) // это значит по событию, а иначе значит из кода вызвана. И надо туда добавить этот event в ()

kostyanet 24.10.2014 06:00

Не все так просто. Общим чохом все сводится в одну функцию, а чтобы по-отдельности проверять надо 2 и брать из ивента элемент, фиксировать где-то ошибку, затем мониторить ошибки собирая этот dis &= error и тп. Короче усложнение, предлагаю оставить чохом, или искать нормальный скрипт. Свой не дам.


Часовой пояс GMT +3, время: 10:39.