我遇到一个问题,当我提交页面(表单)时,提交到php邮件是成功但页面再次重新加载。尝试返回true和false也是preventDefault()但页面仍然重新加载。
$('#frmRequest').submit(function(e){
//$('#SUBMIT').click(function(){
var isValidForm = true;
$('#RequestDetailsArea').find('input:visible, textarea:visible, select:visible').each(function(){
if( $(this).val().length == 0|| $(this).val()=='Select' ) {
$(this).addClass('validation');
isValidForm = false;
}
else {
$(this).removeClass('validation');
$('#ErrorRequest').addClass('hidden');
}
});/* end check validation in RequestDetailsArea*/
if (!isValidForm) {
$('#ErrorRequest').removeClass('hidden');
}
validreturn=validateForm();
if(isValidForm && validreturn)
{
$('#RequestDetailsArea').find('div:hidden').each(function(){
//alert($(this).attr('id'));
$(this).remove();
});
msg="ok";
$.ajax({
url:"allfields.php",
type:"POST",
// dataType:"json",
data: $("#frmRequest").serialize(),
success: function(msg){
//alert("Form Submitted: "+ msg);
return msg;
},
error: function() {
alert('Error occured');
}
});
e.preventDefault();
//return false;
}
});/* end of submit Function*/
答案 0 :(得分:0)
在您的代码中,您已将e.preventDefault();
放入
if(isValidForm && validreturn)
{
//...
e.preventDefault();
}
所以我认为如果您的条件不匹配,那么表单将被提交,因为方法e.preventDefault();
的调用将不会被执行。如果是这种情况,那么您可以将其保持在if
条件之外,即
$('#frmRequest').submit(function(e){
e.preventDefault();
// rest of your code here
});
更新:您在return msg
中使用success
,无效,您可以这样做
success: function(msg){
returnValue(msg); // call the function
}
并在脚本中的某处声明returnValue
,如
function returnValue(data)
{
// do something with data
}