Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 19.05.2015, 23:43
Интересующийся
Отправить личное сообщение для Prowler Посмотреть профиль Найти все сообщения от Prowler
 
Регистрация: 09.07.2008
Сообщений: 28

"не терять" фокус
Доброго времени суток!
Есть текстовое поле, допустим, "город", есть див ниже него в который подгружаются элементы для выбора, типа подсказок, для текстового поля. На форме есть и другие поля. После введения данных в поле "город" нужно проверить. На ум приходит только потеря фокуса, после чего осуществляем проверку.
Но, если щелкнуть по диву в котором подсказки, фокус с поля теряется и проверятся уходит то, что еще небыло до конца заполнено.
Может быть можно как то "обмануть" потерю фокуса? Звучит примерно так: если "город" потеряло фокус и активный элемент не див с подсказками отправляем данные на проверку.
Ответить с цитированием
  #2 (permalink)  
Старый 20.05.2015, 08:00
Профессор
Отправить личное сообщение для krasovsky Посмотреть профиль Найти все сообщения от krasovsky
 
Регистрация: 21.12.2012
Сообщений: 869

Чет ниче не понял. У тебя поле город это input? Так у инпута есть событие change которое и срабатывает как раз в этот момент.
Ответить с цитированием
  #3 (permalink)  
Старый 20.05.2015, 11:13
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 12,781

Сообщение от Prowler
После введения данных в поле "город" нужно проверить.
Предложение явно не закончено...

Можно еще нажатия кнопок отлавливать... С таймаутом...
Ответить с цитированием
  #4 (permalink)  
Старый 20.05.2015, 15:55
Интересующийся
Отправить личное сообщение для Prowler Посмотреть профиль Найти все сообщения от Prowler
 
Регистрация: 09.07.2008
Сообщений: 28

change почти то же самое - срабатывает при потере фокуса.
Попробую объяснить.
Есть поле input, есть div. Во время ввода в input в div подгружаются данные из которых пользователь может что-то выбрать и выбранное попадет в input. Как у яндекса и гугла в строке поиска. После того как пользователь ввел данные в Input нужно проверить их(отправляются на сервер). Т.е. пользователь может либо ввести данные в input с клавиатуры либо выбрать их из предложенных вариантов, отображенных в div. Как определить что пользователь закончил ввод данных в input? В голову приходит стандарное потеря фокуса. Но, если пользователь мышкой щелкнет по диву для того чтобы выбрать один из предложенных вариантов, поле input потеряет фокус и событие потери фокуса, что логично, произойдет раньше чем событие щелчка по диву. Т.е. данные из дива в input еще не попадут, но на проверку по событию потери фокуса уйдут, а в див попадут только после этого. Это вызовет ошибку.
Можно ли как то решить эту проблему? Надеюсь внятно написал в этот раз
Ответить с цитированием
  #5 (permalink)  
Старый 20.05.2015, 18:00
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 12,781

Сообщение от Prowler
Как определить что пользователь закончил ввод данных в input?
Это философский вопрос... На него на всякий пользователь может ответить, если его про то спросить.

Но если твой инпут сунуть в форму - можно ловить событие onsubmit...
Ответить с цитированием
  #6 (permalink)  
Старый 21.05.2015, 00:30
Интересующийся
Отправить личное сообщение для Prowler Посмотреть профиль Найти все сообщения от Prowler
 
Регистрация: 09.07.2008
Сообщений: 28

ksa,
Если бы было все так просто... нужно провести валидацию по этому полю раньше чем данные с формы уйдут на сервер. Есть тому причина...
Видимо решения вопроса не существует
Ответить с цитированием
  #7 (permalink)  
Старый 21.05.2015, 10:23
Профессор
Отправить личное сообщение для krasovsky Посмотреть профиль Найти все сообщения от krasovsky
 
Регистрация: 21.12.2012
Сообщений: 869

Сообщение от Prowler
Если бы было все так просто... нужно провести валидацию по этому полю раньше чем данные с формы уйдут на сервер. Есть тому причина...
Видимо решения вопроса не существует
Не придумывай. Твой лучший вариант - onsubmit. Есть такой волшебный метод addEventListener в js (или если ты пользуешь jq то .submit()) который навешивает обработчик onsubmit на форму, именно для того что бы ты мог это событие поймать, обработать(валидация твоя к примеру) и отменить отправку данных на сервер, если нужно.

Так вот не вилосипедь, создавай форму и индикацией "закончил ввод" пусть служить момент отправки формы.
Ответить с цитированием
  #8 (permalink)  
Старый 21.05.2015, 10:33
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 12,781

Сообщение от Prowler
нужно провести валидацию по этому полю раньше чем данные с формы уйдут на сервер
Событие onsubmit для того и существует...
Ответить с цитированием
  #9 (permalink)  
Старый 22.05.2015, 11:30
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,719

Сообщение от Prowler
Как определить что пользователь закончил ввод данных в input?
По нажатию кнопки "Я закончил ввод", которая может быть подписана ОК, Отправить, Сохранить, или не подписана вообще, то есть по ентеру.
Ответить с цитированием
  #10 (permalink)  
Старый 22.05.2015, 11:33
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,719

Сообщение от Prowler
нужно провести валидацию по этому полю раньше чем данные с формы уйдут на сервер
Можно и на валидацию повесить отгрузку. Как только проканала - ушло.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как перевести фокус на следующий элемент? Shitbox2 jQuery 3 03.11.2012 14:57
2 гридов и фокус bdfy1 ExtJS 1 17.06.2011 03:49
Как вернуть фокус в окно редактирования? Roman Koff Общие вопросы Javascript 1 02.08.2010 12:35
Как убрать выделение в Опере у div, получившего фокус ? spa_2002 Opera, Safari и др. 5 03.09.2009 10:42
Оставить фокус в поле Andrej_2 Общие вопросы Javascript 4 15.06.2009 13:15