jQuery无法在InfoWindow中处理表单

jQuery not working with form inside a InfoWindow

本文关键字:处理 表单 InfoWindow jQuery      更新时间:2023-09-26

我使用JQuery处理所有表单提交,它们都运行良好。但我似乎无法让它与动态生成(Googlemap的标记)InfoWindow中的表单一起工作。我应该以不同的方式使用它吗?也许用$(document).on来捕获提交?

这是捕获表单提交的代码:

$(function() {
$('#new_marker').submit(function(e) {
    e.preventDefault();
    $.post($("#new_marker").attr("action"), $("#new_marker").serialize(), function(data) {
        var json = myParseJSON( data );
        if( json.status=="success" ) {
            location.href = site_root+'map/modify_marker/'+json.marker_id;
        } else {
            new Messi( json.msg, {title: 'Oops...', titleClass: 'anim error', buttons: [{id: 0, label: 'Fechar', val: 'X'}]});
        }
    }).fail( function() { general_error(); } );
    return false;
});
});

正如我所说的,对于我的所有其他表单,都有这样的代码,但对于InfoWindow中的new_marker表单则没有。它基本上只是在不确认Jquery代码的情况下将表单发布到操作中。

这是我用来将内容加载到InfowWindow:的代码

function newmarker_infowindow_content(lat, long, infowindow) {
    $.ajax({
    url: site_root +'map/newmarker_infowindow/' + lat +'/' +long,
    success: function(data){
        infowindow.setContent(data);
        processInLineLabels();
    }
});
}

由于表单在页面加载时不可用。。。您需要将提交处理程序委托给页面中的永久资产。最近的将是正在插入映射的元素,但也可以使用document

$('#MapDivID').on('submit', '#new_marker', function(e){
     e.preventDefault();
     /* do ajax*/
})

阅读jQuery on()docs

中有关事件委派的更多信息