Google Maps API(v3)インフォウィンドウ内に入力フィールドと送信ボタンを備えたフォームを配置したいと思います。
提出したら、入力フィールドに入力したアドレスを使用してルートサービスを開始する関数を呼び出したいと思います。
これが私のコードです(私は現在、directionsイベントが発生しているかどうかをテストしているだけです。完全なgetDirections()
イベントを記述し、正しく発生したときに動作し、方向を返すことを確認できます):
次のように、MooToolsを使用してイベントリスナーを追加してみました。
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>";
var infoWindow = new google.maps.InfoWindow({
content: infoWindowContent
});
google.maps.event.addListener(marker, 'click', function() {
infoWindow.open(map, marker);
dbug.log($("map-form"));
$("map-form").addEvent("submit", getDirections);
});
function getDirections(event)
{
dbug.log("getDirections");
event.stop();
}
私は自分のサイトの他の場所でMooToolsを使用しているので、すべてのコードをwindow.addEvent('load', function(){...});
フォーム要素を正しく出力しているコンソールトレースに注意してくださいdbug.log($("map-form"));
。ただし、イベントは発生していません。
DOMの別のフォーム(IDが異なる)に同じイベントを追加しましたが、正常に機能します。
それで、MooToolsが要素を見つけて、おそらくイベントリスナーを追加できる場合、イベントの発生を妨げているのは何ですか?これはスコープの問題ですか?