Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 09.09.2012, 17:01
Аспирант
Отправить личное сообщение для solomon2 Посмотреть профиль Найти все сообщения от solomon2
 
Регистрация: 10.01.2012
Сообщений: 39

Потеря фокуса input
Здравствуйте. У меня такая проблема:

Есть инпут с автокомплитом улиц и проверкой введенного адреса.

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

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

Так вот, если пользователь выбирает улицу из автокомплита кликом мыши, то фокус у инпута пропадает и сразу срабатывает проверка введенного адреса. Т.е. даже не успевает подставиться улица из автокомплита, а сразу происходит проверка первых введенных букв, не говоря о том, что нет возможности дописать номер дома.

При этом если улицу выбрать не кликом, а перемещаясь по списку улиц стрелками и нажатием далее клавиши tab или enter, то все в порядке - улица подставляется в инпут, далее можно спокойно дописать номер дома, потом перейти в другой инпут и только после этого срабатывает проверка адреса.

Как сохранить фокус на инпуте, если был клик на списке автокомплита, т.е. чтобы событие change не сработало раньше чем введен полный адрес так же как если улицу выбирать клавишами?

Вот основной код, автокомплит подключаю плагином jquery.autocomplete.js
$("#adress1, #adress2").live("change",function (){
		var me = $(this); 
		var coord = $("#"+me.attr('id').replace('Adress','Coords'));

		coordField.val(''); // очищаем значение поля от старых координат
	
		if ($.trim(me.val())!='') { // если в поле для адресов что то есть

			$.get('/geocoder',{adr: me.val()}, function (response){ 
				if(response.state=='ok')
				{
					coordField.val(response.coords); // кладём в скрытое поле координаты							
				}
				else if (response.state=='many') { // если получили массив адресов
					ask(response.coords,coordField, me.val(),me); 			
				}	
				else { // если координаты не вернулись
					showErrDialog(me.val());
					me.nextAll("input[type='hidden']").val('');
				}
			},'json');
		}
	});

Последний раз редактировалось solomon2, 09.09.2012 в 17:16.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Выделить текст внутри input при получении фокуса InviS jQuery 12 30.09.2015 17:12
Потеря фокуса tohalober Элементы интерфейса 5 19.08.2012 19:37
Потеря фокуса у апплета в браузере motoriton Javascript под браузер 5 10.08.2012 15:57
Потеря фокуса у апплета. motoriton Элементы интерфейса 0 09.08.2012 06:32
При добавлении DOCTYPE "плывут" размеры input type=text Demath (X)HTML/CSS 4 08.07.2012 19:27