Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将事件添加到Google Maps API信息窗口内的元素_Javascript_Google Maps Api 3_Mootools_Infowindow_Mootools Events - Fatal编程技术网

Javascript 将事件添加到Google Maps API信息窗口内的元素

Javascript 将事件添加到Google Maps API信息窗口内的元素,javascript,google-maps-api-3,mootools,infowindow,mootools-events,Javascript,Google Maps Api 3,Mootools,Infowindow,Mootools Events,我想在Google Maps API v3信息窗口中放置一个带有输入字段和提交按钮的表单 提交时,我想调用一个函数,该函数使用输入字段中输入的地址启动方向服务 这是我的代码,我目前只测试方向事件是否被触发。我已经编写了完整的getDirections事件,可以确认它可以正常工作,并在正确触发时返回方向: 我尝试使用MooTools添加事件侦听器,如下所示: var infoWindowContent = "<b>Get Directions From...</b>&l

我想在Google Maps API v3信息窗口中放置一个带有输入字段和提交按钮的表单

提交时,我想调用一个函数,该函数使用输入字段中输入的地址启动方向服务

这是我的代码,我目前只测试方向事件是否被触发。我已经编写了完整的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表单;正确输出表单元素,但事件未触发

我已经将相同的事件添加到DOM中具有不同ID的另一个表单中,它运行良好


那么,如果MooTools可以找到元素并假定添加事件侦听器,那么是什么阻止了事件的触发呢?这是范围问题吗?

它看起来不像范围问题。getDirections在同一范围内

这是一个鸡蛋对鸡的案子。最终,您的html字符串不在DOM中,因此您还不能向其中添加事件或引用其中的元素。info窗口有点异步,因此需要确保连接了content div。或者,您需要使用事件委派

google提供的事件模式可以方便地将提交处理程序附加到div的domready上,如下所示:

测试和工作。或者,您可以将内容sting作为某个隐藏div的子级附加到dom中,添加事件,然后将div作为内容传递,因为它支持指向节点

或者,您可以使用事件委派

例如


addEvent'submit:relaymap form',函数{};-或者类似的jQuery,例如$document.on'submit',map form',fn

非常好-谢谢!我想我更喜欢你的第一个建议,而不是有一个隐藏的div。我不知道divs发送domready事件。我对JavaScript还是很陌生,但我喜欢它。在此期间,有些事情可能发生了变化。这对我来说是可行的,但前提是document.id被document.getElementById替换,addEvent被addEventListener替换。这是因为最初的答案是关于MooTools的。太好了。非常感谢你。这正是我一直难以解决的问题。@dev_khan他们移动了它。-内容才是最重要的
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);