preventdefault()在IE8中不起作用

时间:2013-02-13 11:13:06

标签: javascript jquery ajax internet-explorer-8 leaflet

我正在开发一个相当大量使用ajax的页面。所有的ajax表单在浏览器中似乎都运行良好,但在IE8及以下版本中,页面上的最后一步是打破的。

以下是显示问题的演示页:http://jolora.com/~fwm/

要重现此问题,请填写最终表格(电子邮件名称等) - 地图上会显示标记列表。 “请求约会”按钮应该激活ajax函数,但实际上它在IE7和IE8中提交表单,因此看起来preventDefault不起作用。

这是相关的jQuery:

// Request appointment
$('#map').on('submit', 'form', function(event) {
    event.preventDefault();
    var solicitorID = $(this).attr('id');
    solicitorRequest(solicitorID,applicationID);
});

function solicitorRequest(requestedSolicitor,currentApplication) {
$.ajax({
    url: siteurl + 'wp-admin/admin-ajax.php',
    data:{
        'action':'do_ajax',
        'fn':'request_solicitor',
        'solicitor': requestedSolicitor,
        'application': currentApplication       
    },
    dataType: 'JSON',
    success:function(data){
        alert('Please check your email - this success function needs improving');
    },
    error: function(errorThrown){
        alert('error');
        //console.log(errorThrown);
    }
});
}

弹出窗口是使用Leaflet的bindPopup方法http://leafletjs.com/reference.html#popup构建的,这是我插入弹出窗口的内容的结构:

var popupContentBegin = '<form id="'
+ solicitor.id + '">'
+ '<h3>' + solicitor.name + '</h3>'
+ '<div class="contact-details">'
+ '<span class="addr">' + solicitor.address + '</span>';

var popupContentTel = '';

if(solicitor.telephone != false) {
    popupContentTel = '<span class="tel">'
    + solicitor.telephone
    + '</span>';
}

var popupContentEnd = '</div>'
+ '<button type="submit">Request appointment</button>'
+ '</form>';

var popupContent = popupContentBegin + popupContentTel + popupContentEnd;

var marker = L.marker([lat, lng], {icon: solicitorIcon}).bindPopup(popupContent, popupOptions);

任何帮助将不胜感激!感谢。

1 个答案:

答案 0 :(得分:0)

尝试将选择器更改为:

$(document).on('submit', '#map form', function(event) {...

http://api.jquery.com/live/

编辑:您需要在就绪函数中调用此函数,以便确保DOM已完全加载:

$(function () {
  // Put code here
});