Ответ 1
он не похож на проблему с областью. getDirections находится в той же области.
это яйцо против куриного футляра. в конечном счете - ваша строка html не находится в DOM, поэтому вы не можете добавлять к ней какие-либо события или ссылаться на нее. информационное окно немного асинхронно, поэтому вам нужно убедиться, что содержимое div включено. Или вам нужно использовать делегирование событий.
шаблон события google обеспечивает пригодится, чтобы присоединить обработчик отправки на div domready
так:
var infoWindowContent = [
"<b>Get Directions From...</b><br />",
"<form id='map-form'>",
"Address/Postcode: <input id='map-from-address' type='text' />",
"<input type='submit' id='map-go' value='Go' />",
"</form>"
].join("");
var info = new google.maps.InfoWindow({
content: infoWindowContent
});
google.maps.event.addListener(info, 'domready', function() {
document.id("map-form").addEvent("submit", function(e) {
e.stop();
console.log("hi!");
});
});
info.open(map, marker);
проверено и работает. В качестве альтернативы вы можете прикрепить контент, содержащий в dom, как дочерний элемент некоторого скрытого div, добавить событие, а затем передать div как содержимое, поскольку оно поддерживает указание на node.
https://developers.google.com/maps/documentation/javascript/infowindows
вы можете использовать делегирование событий
например.
topnode.addEvent('submit:relay(#map-form)', function(e){ });
- или эквивалентный jQuery, например $(document).on('submit', '#map-form', fn)