我正在处理一个相当大量使用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);
任何帮助将不胜感激!谢谢。