Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Как называется кука.... (https://javascript.ru/forum/misc/45306-kak-nazyvaetsya-kuka.html)

Chekist 23.02.2014 07:11

Как называется кука....
 
Добрый день!
Пишу авторизацию пользователей.
На событиях "keyup" и "change" висит функция валидации данных и отвечает на них красивой иконкой с крестом либо зеленой галочкой.
Все хорошо, когда пользователь первый раз на сайте - ввел данные, получил "ок" по каждому из полей и вошел.
Проблемы начинаются если пользователь после этого сохранил пароль с логином для этого сайта и входит на него второй раз - форма уже заполнена и проверки по ней автоматически не происходит.
Решил ситуацию - по таймауту при документреди автоматически запускать проверку заполненности и валидности этих полей - все ок, НО в таком случае эта функция запускается и для тех кто зашел в первый раз и сразу видит непонятные кресты у пустых еще незаполненных полей - мол данные не валидны (не гуд и не красиво).

Нужно решение!

Т.е. зашел первый раз - вводи данные, получай валидность по каждому полю и вперед. Нет проверки автозаполненных полей и нет непонятных крестов у пустых полей.
Зашел второй раз - идет проверка заполненных полей.

Фактически, решение видимо сводится к проверки куки, которую браузер создает сам после того как пользователь нажал "сохранить данные" после авторизации. Что это за кука?

Chekist 23.02.2014 08:45

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

Chekist 23.02.2014 09:37

Решил не заморачиваться и сделал autocomplete="off"...

danik.js 23.02.2014 10:55

Цитата:

Сообщение от Chekist
все ок, НО в таком случае эта функция запускается и для тех кто зашел в первый раз

Неужели не додумался проверять значение на пустоту полей. Если по таймауту поля пустые - едем дальше. Если не пустые - значит сработала автоподстановка, делаем валидацию. Все же в крайней степени очевидно, не? Зачем юзера лишать удобства автозаполнения?

danik.js 23.02.2014 10:55

Кстати, при автозаполнении разве не срабатывает событие input?

kostyanet 24.02.2014 11:18

Цитата:

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

На сервере проверится.

Или вы на сервере уже не проверяете, типа веруете в иконки с крестами? В дух, так сказать, животворящий. Ну ждите когда ломанут. Отправить форму на ваш сервер можно вообще ничего не загружая, то есть выкосив в доме иконки и кресты и все молитвы на js сделать там свой домик с красным уголком.

kostyanet 24.02.2014 11:22

Все что попало в браузер принадлежит юзеру. Все что принадлежит юзеру подлежит тщательной проверке и санации в порядке применения.

Chekist 24.02.2014 23:53

Цитата:

Сообщение от danik.js (Сообщение 299041)
Кстати, при автозаполнении разве не срабатывает событие input?

Не подскажите, что это за событие такое?
Не могу его почему-то найти тут...

Chekist 24.02.2014 23:55

Цитата:

Сообщение от kostyanet (Сообщение 299174)
На сервере проверится.

На сервере все успешно проверяется.
Но цель - создать user-friendly интерфейс на JS, а уж потом, естественно, обработать и на сервере.

Chekist 25.02.2014 00:37

Цитата:

Сообщение от danik.js (Сообщение 299040)
Неужели не додумался проверять значение на пустоту полей. Если по таймауту поля пустые - едем дальше. Если не пустые - значит сработала автоподстановка, делаем валидацию. Все же в крайней степени очевидно, не? Зачем юзера лишать удобства автозаполнения?

Спасибо за простой и оч полезный совет!
Иногда сидишь и сам себе трудности придумываешь, когда ответ очевиден :)

danik.js 25.02.2014 00:39

Цитата:

Сообщение от Chekist
Не могу его почему-то найти тут...

Хз в какой ты помойке ищешь. Могу порекомендовать Mozilla Developer Network - неплохие доки (хотя может кто подскажет и получше). Для jquery есть api.jquery.com . Но в данном случае из jquery тебе только метод .on() нужен.

Chekist 25.02.2014 00:58

Цитата:

Сообщение от danik.js (Сообщение 299305)
Хз в какой ты помойке ищешь. Могу порекомендовать Mozilla Developer Network - неплохие доки (хотя может кто подскажет и получше). Для jquery есть api.jquery.com . Но в данном случае из jquery тебе только метод .on() нужен.

Действительно!!
This covers every change to an input using jQuery 1.7 and above:
$(".inputElement").on("input", null, null, callbackFunction);

Спасибо! (почему-то не могу + нажать еще раз)
Все же лучше для моего случая проверять на заполненность, а потом уж и валидацию...

Но зато теперь знаю что такое 'input'.

danik.js 25.02.2014 01:18

К слову события input нету в IE8. Там зато есть propertychange - с ним могут быть проблемы, ибо это немного другое событие (изменение любого свойства, не только value)
В простом случае можно вешать событие так:
$('.input').on('input propertychange', function(){})


Для IE8 сработает propertychange, для остальных - input

kostyanet 25.02.2014 04:01

Цитата:

Сообщение от Chekist (Сообщение 299298)
На сервере все успешно проверяется.
Но цель - создать user-friendly интерфейс на JS, а уж потом, естественно, обработать и на сервере.

Автозаполнение для френдов и сделано.


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