我正在客户的网站上工作,这应该只是添加联系表单和验证插件的一秒工作。
我认为一切顺利,直到我进入IE。
所有其他浏览器完美地运行absolutley,但经过数小时的修补后,我有50%修复了IE问题。现在我真的被卡住了。
我花了很长时间才使验证插件按照需要运行,然后才显示出来。
现在在降级到jQuery v1.5.2并使用Validate v1.8之后,错误显示出来,如果阻止了提交。
但是现在它没有提交表格。
以下是我在其他浏览器中运行良好的代码。
<script type="text/javascript">
$(document).ready(function () {
$("#node").hide();
$("#success").hide();
$.ajaxSetup({
cache: false
});
$("#contact_form").validate({
submitHandler: function (form) {
var str = $(form).serialize();
$.ajax({
type: "POST",
url: 'http://www.french-tuition.co.uk/proccess_contact.php',
dataType: 'text',
cache: false,
data: 'ajax=true&' + str,
contentType: "application/x-www-form-urlencoded; charset=utf-8",
success: function (msg) {
$("#node").ajaxComplete(function (event, request, settings) {
result = msg;
$("#node").html(result);
if (msg == 'success') {
$("#node").hide();
$("#contact_form").fadeOut("slow");
$("#success").fadeIn("slow");
} else {
result = msg;
$("#node").html(result);
$("#node").fadeIn("slow");
}
});
}
});
return false;
}
});
});
</script>
错误肯定在提交函数处理程序中(我通过添加alert();
函数进行测试来检查。我可以在使用alert函数的ajax调用之前,但不能在之后。)
因此,IE和此功能正在发生一些事情
答案 0 :(得分:3)
为什么要在成功函数中绑定#node上的ajaxComplete处理程序?你不能改变这个:
success: function (msg) {
if (msg == 'success') {
$("#node").hide();
$("#contact_form").fadeOut("slow");
$("#success").fadeIn("slow");
} else {
$("#node").html(msg);
$("#node").fadeIn("slow");
}
}