Когда я нажимаю на маркер, я показываю информационное окно с двумя полями ввода и одной кнопкой:
Когда я закрываю информационное окно, я хотел бы знать, была ли нажата кнопка или нет.
Как мне это сделать?
google.maps.event.addListener(marker[i],"click", function()
{
html = "Name: " + "<input type='text' id='name' />";
html += "Firstname: " + "<input type='text' id='firstname' />";
html += "<input type='button' id='okButton' value='OK' />";
infoWindow[i].setContent(html);
infoWindow[i].open(map,marker[i]);
});
google.maps.event.addListener(infoWindow[i],'closeclick',function ()
{
//action when the ok button was pressed or not
//this code doesn't work
$('#okButton').button().click(function()
{
//action
});
});
Используйте $.on()
для наблюдения за событием клика маркера (Примечание: вы не можете напрямую присоединить событие, потому что кнопка доступна только после того, как событие domready было запущено.
$(document ).on( "click", "#okButton", function() {
$(this).data('clicked',true);
});
.... он установил data
-property для кнопки, вы можете получить ее позже, чтобы определить, была ли нажата кнопка:
google.maps.event.addListener(infoWindow[i],'closeclick',function (){
if($("#okButton").data('clicked')){
alert('do something');
}
});
$('#okButton').button().click(function()
это неправильный способ обработки события клика. Также вы динамически добавляете кнопку DOM.. Замените это как
$(document).on('click', '#okButton', function() {
//action
});