[英]Contact form & IE8 woes - can't seem to stop the form submitting
我有一个使用jQuery中的.ajax()
方法提交的联系表单,以便在不刷新页面的情况下提交表单。 它适用于除IE之外的所有浏览器,而IE则显得格格不入,并且坚持刷新页面。
这是我的代码:
function appointmentform() {
$("#appointment-form").on("submit", function(e) {
// serialize all input data
var dataString = $(this).serialize();
console.log(dataString);
// if there are no inputs with errors
if ($("input.required.error").length < 1) {
// ajax call to mail.php script
$.ajax({
type: "POST",
url: "http://www.thesalonleamingtonspa.com/mail",
data: dataString,
success: function() {
// success notice
}
});
}
// cancel form submit
if (e.preventDefault) {
e.preventDefault();
} else {
e.returnValue = false;
}
});
}
我意识到e.preventDefault()
对IE毫无意义,但我认为e.returnValue = false
是等效的。 有人知道为什么它对我不起作用吗?
编辑:只是IE8是有问题的孩子。
真正的罪魁祸首是IE8和console.log
IE8不支持开箱即用地编写console
,因此一旦遇到console
功能,脚本便立即停止运行。 在我的代码中, preventDefault
出现在console
部分之后,因此它没有运行。
解决方案:保持IE8中的开发人员工具打开,使您可以写入console
我之所以回答我自己的问题,是因为尽管其他答案都很有帮助,但它们都不是100%正确的。 将来听到我的问题的任何人都可以从听到我现在概述的真实原因中受益。
返回false
应取消表单提交
代替
if (e.preventDefault) {
e.preventDefault();
} else {
e.returnValue = false;
}
采用
return false;
怎么样:不用按钮,只需使用按钮即可:
// use this ~ buttons don't do anything unless explicitly told to
<input type="button">
// not this ~ the default behavior is to submit ~ which you don't want
<input type="submit">
您只需要侦听按钮的单击,然后触发该功能即可。
我多年来没有使用过提交按钮...从字面上看...只是为了避免这个问题。
我通常听“提交”事件的方式是单击。 以我的经验,即使IE也可以处理点击事件。
function doAjaxStuff {
// do form validation
// do ajax stuff
}
myButton.click(doAjaxStuff);
我意识到e.preventDefault()对IE毫无意义
仅当您不使用jQuery时才如此。 jQuery使这个跨浏览器。
猜猜:您是否使用jQuery <1.4?
JavaScript提交事件不会在Internet Explorer中冒泡。 但是,依赖事件委托和Submit事件的脚本将在jQuery 1.4及更高版本的浏览器中一致地工作,这已经规范了事件的行为。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.