0

我面临一个问题,当我提交页面(表单)时,提交到 php 邮件是成功的,但页面再次重新加载。尝试 return 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*/
4

1 回答 1

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
}
于 2012-09-13T12:43:49.960 回答