Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Как отработать два события за один раз. (https://javascript.ru/forum/misc/52175-kak-otrabotat-dva-sobytiya-za-odin-raz.html)

andreydial 06.12.2014 22:25

Как отработать два события за один раз.
 
Может неправильно тему назвал, но по другому не знаю даже как. Есть код
div id="Type_location">
                 <form action="javascript: void(0);" onSubmit="showAddress(this.address.value); return false">
					<span id="Type_location"><label for="address"></label></span>

				<nobr><input  id="address" class="hideLOnClick fildInput" type="text" name="type1" value="Type location" onclick='hideWords($(this));' placeholder="Type location" def_val="Type location" title="Type location" limit='69' valid="^.+$" error="- Please type a location then press find" ></input>&nbsp;<input  id="find_bootton" class="fildInput" type="submit" value=" Find " ></nobr>
                </form>

        <script>
            var autocomplete = new google.maps.places.Autocomplete($("#address")[0], {});

            google.maps.event.addListener(autocomplete, 'place_changed', function() {
                var place = autocomplete.getPlace();
                console.log(place.address_components);
            });
        </script>


			</div> <!-- Type_location -->

Надо убрать кнопку
<input  id="find_bootton" class="fildInput" type="submit" value=" Find " >

но чтобы событие отработалось сразу после автозаполнения
<form action="javascript: void(0);" onSubmit="showAddress(this.address.value); return false">

Короче говоря как сократить строку
<input  id="address" class="hideLOnClick fildInput" type="text" name="type1" value="Type location" onclick='hideWords($(this));' placeholder="Type location" def_val="Type location" title="Type location" limit='69' valid="^.+$" error="- Please type a location then press find" ></input>&nbsp;<input  id="find_bootton" class="fildInput" type="submit" value=" Find " ></nobr>

и убрать второй input, но событие отработать?
За ошибки в правописании не гнобить, творчество не мое. Изменяю функционал.

danik.js 07.12.2014 05:08

Цитата:

Сообщение от andreydial
после автозаполнения

Автозаполнение - это событие place_changed гугл мапсов?
При заполнении тебе надо вызвать showAddress? Добавь туда (в обработчик события place_changed) showAddress(..).

andreydial 08.12.2014 14:28

У меня по нажатии
<input  id="find_bootton" class="fildInput" type="submit" value=" Find " >

Происходит запись координат в базу и выдается сообщение что адрес обработан.
А надо после клика в строке автозаполнения активировать этот механизм, т.е. убрать кнопку Find визуально.

danik.js 08.12.2014 17:01

Выше уже ответил.

andreydial 08.12.2014 17:12

ShowAdress вызывается и работает правильно. place_changed тоже. Здесь никаких проблем.
После выбора места в автозаполнении надо автоматом отработать событие
id="find_bootton"
. А оно сейчас отрабатывается только после нажатия соответствующей кнопки. Вот что я хочу сказать. Как запустить скрипт в скрипте? Либо я вас не очень понимаю.

danik.js 08.12.2014 17:14

Цитата:

Сообщение от danik.js
При заполнении тебе надо вызвать showAddress? Добавь туда (в обработчик события place_changed) showAddress(..).

Объясни как ты это понял - посмотрим правильно ты понял или нет.

danik.js 08.12.2014 17:15

Цитата:

Сообщение от andreydial
автоматом отработать событие
id="find_bootton"

Это не событие. Это id элемента :D

andreydial 08.12.2014 17:20

google.maps.event.addListener(map, 'click', function()
	{
  		infowindow.close();
		});
	setMarkers(1);	// вывод на карту маркеров в кластерах (Zork_libs.js)

	$("#find_bootton").attr("disabled",false);
	$("#select_cat").attr("disabled",false);
	
	$('#pic').customFileInput('Upload Pic');
}

function showAddress(address) {
	geocoder = new google.maps.Geocoder();
	geocoder.geocode( {'address': address}, function(results, status)
	{
		if (status == google.maps.GeocoderStatus.OK)
		{//yourKML.setMap(null);
				var lat = results[0].geometry.location.lat();
				var lon = results[0].geometry.location.lng();
				document.getElementById("lat").value = lat;
				document.getElementById("lng").value = lon;
				var location = new google.maps.LatLng(lat,lon);

				corrent_str=1;
				getNewPage(lat,lon,address);
				alert("Location found. Please continue.");		
		}else
			{
				alert("No results have been found. Please enter a different criteria.");
				$("#lat").val(""); $("#lng").val("");
			}
	});
}


Часть скрипта
$("#find_bootton").attr("disabled",false);
Разве не здесь проверяется нажатие кнопки?

danik.js 08.12.2014 17:32

Цитата:

Сообщение от andreydial
find_bootton

Цитата:

Bootton.I is a trojan for Symbian OS Series 60 2nd Edition phones
Цитата:

Сообщение от andreydial
$("#find_bootton").attr("disabled",false);

Здесь кнопка делается доступной (включенной). Хотя она вроде и так доступна :)

andreydial 08.12.2014 22:44

Цитата:

Сообщение от danik.js (Сообщение 345178)
Автозаполнение - это событие place_changed гугл мапсов?
При заполнении тебе надо вызвать showAddress? Добавь туда (в обработчик события place_changed) showAddress(..).

У меня скрипт гугл мапса так прописан
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false&libraries=places&language=en-AU"></script>

А обработка
<script>
            var autocomplete = new google.maps.places.Autocomplete($("#address")[0], {});

            google.maps.event.addListener(autocomplete, 'place_changed', function() {
                var place = autocomplete.getPlace();
                console.log(place.address_components);
            });
        </script>

Я вставлял так
<script>
            var autocomplete = new google.maps.places.Autocomplete($("#address")[0], {});

            google.maps.event.addListener(autocomplete, 'place_changed', function() {
                var place = autocomplete.getPlace();
                console.log(place.address_components);
            });
showAddress(this.address.value);
        </script>

и так
<script>
            var autocomplete = new google.maps.places.Autocomplete($("#address")[0], {});

            google.maps.event.addListener(autocomplete, 'place_changed', function() {
                var place = autocomplete.getPlace();
                console.log(place.address_components);
showAddress(this.address.value);
            });
        </script>

ни фига не работает. Где я гоню?:help:


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