Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / JQuery выбор первой из выпадающего списка / 10 сообщений из 10, страница 1 из 1
20.02.2013, 11:52
    #38158657
Virtuoz
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JQuery выбор первой из выпадающего списка
С JQuery раньше не работал, но мне написали скрипт для сайта с использованием JQuery и вот возникла необходимость немного его доработать.

На сайте ( http://taxi24.dp.ua/) есть поле, например "Откуда", "Куда" в которые через Google API подбрасываются варианты названий улиц. И мне нужно доработать это поле так, чтобы после того как появляются варианты выбора и пользователь нажал Enter - первый из предложенных вариантов подкинулся в поле вводе ("Откуда").

Решение я нашел вот здесь: http://jsfiddle.net/QW59W/

У меня 2 вопроса:
1) Как прикрутить это решение к моему полю? (где и как её нужно вызвать?)
2) Почему перед определением функции стоит скобка? Что она означает?

Код: javascript
1.
 (function pacSelectFirst(input){ 



Заранее благодарен!
...
Рейтинг: 0 / 0
20.02.2013, 11:59
    #38158664
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JQuery выбор первой из выпадающего списка
Virtuoz1) Как прикрутить это решение к моему полю? (где и как её нужно вызвать?)
Желательно сделать тестовый пример - на нём и покажут...

Virtuoz2) Почему перед определением функции стоит скобка? Что она означает?
Скорее всего это конструкция

Код: javascript
1.
2.
3.
(function (){
   ...
})();


Потому как скобки ставятся, как минимум, парами ()...
...
Рейтинг: 0 / 0
20.02.2013, 12:06
    #38158685
Virtuoz
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JQuery выбор первой из выпадающего списка
авторСкорее всего это конструкция

Да, это такая конструкция, а что она означает?
...
Рейтинг: 0 / 0
20.02.2013, 12:17
    #38158710
Virtuoz
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JQuery выбор первой из выпадающего списка
Вот мои попытки сделать (неудачные):
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
$(function(){
    $('#form_from, #form_from_home, #form_to, #form_to_home').live("focusout", function(){
        complite = false;
    });
    
    $("#form_from").focusin(function () {
        $(document).keypress(function (e) {
//            alert(e.which);
            if (e.which == 13) {
                var firstResult = $(".pac-container .pac-item:first").text();
                $("#form_from").val(firstResult);
                alert('1111');
                $(".pac-container .pac-item:first").addClass("pac-selected");
                $(".pac-container").css("display","none");
                $(".pac-container").css("visibility","hidden");
            } else {
                $(".pac-container").css("visibility","visible");
            }

        });
    });

})



В решении же все работает:

Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
<!DOCTYPE html>
<html>
<body>
<input id="searchTextField" type="text" size="50">
<script src='https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js'></script>
<script src="https://maps.googleapis.com/maps/api/js?sensor=false&libraries=places"></script>


<script>
    var pac_input = document.getElementById('searchTextField');

    (function pacSelectFirst(input) {
        // store the original event binding function
        var _addEventListener = (input.addEventListener) ? input.addEventListener : input.attachEvent;

        function addEventListenerWrapper(type, listener) {
            // Simulate a 'down arrow' keypress on hitting 'return' when no pac suggestion is selected,
            // and then trigger the original listener.
            if (type == "keydown") {
                var orig_listener = listener;
                listener = function(event) {
                    var suggestion_selected = $(".pac-item.pac-selected").length > 0;
                    if (event.which == 13 && !suggestion_selected) {
                        var simulated_downarrow = $.Event("keydown", {
                            keyCode: 40,
                            which: 40
                        });
                        orig_listener.apply(input, [simulated_downarrow]);
                    }

                    orig_listener.apply(input, [event]);
                };
            }

            _addEventListener.apply(input, [type, listener]);
        }

        input.addEventListener = addEventListenerWrapper;
        input.attachEvent = addEventListenerWrapper;

        var autocomplete = new google.maps.places.Autocomplete(input);

    })(pac_input);
</script>
</body>
</html>



Но мне не понятно как это реализовать в своем случае. То есть нужно ли эту функцию описывать до $(function() или внутри нее и в какой момент будет вызвана pacSelectFirst, если будет описана до $(function() ??
...
Рейтинг: 0 / 0
20.02.2013, 12:21
    #38158718
Virtuoz
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JQuery выбор первой из выпадающего списка
Всё, разобрался! Прошу прощения за беспокойство.

Решение: Код добавил в initialize().
...
Рейтинг: 0 / 0
20.02.2013, 13:08
    #38158840
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JQuery выбор первой из выпадающего списка
VirtuozДа, это такая конструкция, а что она означает?
Из букваря...
http://learn.javascript.ru/closures-usage#приём-проектирования-модуль
...
Рейтинг: 0 / 0
20.02.2013, 13:24
    #38158873
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JQuery выбор первой из выпадающего списка
VirtuozНо мне не понятно как это реализовать в своем случае. То есть нужно ли эту функцию описывать до $(function() или внутри нее и в какой момент будет вызвана pacSelectFirst, если будет описана до $(function() ??
Как вариант...

Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
<!DOCTYPE html>
<html>
<head>
<script src='https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js'></script>
<script src="https://maps.googleapis.com/maps/api/js?sensor=false&libraries=places"></script>
<!--
<script src="http://code.jquery.com/jquery-latest.js"></script>
<link rel="stylesheet" type="text/css" href="tmp.css" />
-->
<style type="text/css">
label {
	display: block;
}
label + label {
	margin-top: 5px;
}
</style>
<script type="text/javascript">
$(document).ready(function() {
	var input = document.getElementById('beg');
	pacSelectFirst(input);
	input = document.getElementById('end');
	pacSelectFirst(input);
});
function pacSelectFirst(input) {
	// store the original event binding function
	var _addEventListener = (input.addEventListener) ? input.addEventListener : input.attachEvent;
	function addEventListenerWrapper(type, listener) {
		// Simulate a 'down arrow' keypress on hitting 'return' when no pac suggestion is selected,
		// and then trigger the original listener.
		if (type == "keydown") {
			var orig_listener = listener;
			listener = function(event) {
				var suggestion_selected = $(".pac-item.pac-selected").length > 0;
				if (event.which == 13 && !suggestion_selected) {
					var simulated_downarrow = $.Event("keydown", {
						keyCode: 40,
						which: 40
					});
					orig_listener.apply(input, [simulated_downarrow]);
				}

				orig_listener.apply(input, [event]);
			};
		}
		_addEventListener.apply(input, [type, listener]);
	}
	input.addEventListener = addEventListenerWrapper;
	input.attachEvent = addEventListenerWrapper;
	var autocomplete = new google.maps.places.Autocomplete(input);
};
</script>
</head>
<body>
<label>
	Откуда
	<input id="beg" type="text" size="50">
</label>
<label>
	Куда
	<input id="end" type="text" size="50">
</label>

<script>
</script>
</body>
</html>


Думау так будет понагляднее...
...
Рейтинг: 0 / 0
20.02.2013, 14:45
    #38159072
Virtuoz
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JQuery выбор первой из выпадающего списка
Да, так нагляднее, спасибо.

Единственное не могу понять почему это решение не работает в IE8 (((
В Опере, Хроме, FireFox - всё отлично, даже в IE9, а вот именно IE8 - не хочет воспринимать.
...
Рейтинг: 0 / 0
20.02.2013, 15:58
    #38159255
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JQuery выбор первой из выпадающего списка
VirtuozЕдинственное не могу понять почему это решение не работает в IE8 (((
Так оно может в нём изначально не работает... Т.е. на него и не расчитано...
...
Рейтинг: 0 / 0
20.02.2013, 17:56
    #38159560
Virtuoz
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JQuery выбор первой из выпадающего списка
Блин, вот это конечно плохо (((
Буду думать, как обойти эту проблему для IE8. Если найду решение - обязательно отпишусь здесь.
...
Рейтинг: 0 / 0
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / JQuery выбор первой из выпадающего списка / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]