Firefox表单提交jQuery问题

时间:2012-03-13 13:50:22

标签: php jquery forms firefox

我使用以下脚本提交带有jQuery的表单,但Firefox已生成崩溃错误报告,请让我知道我做错了什么。

function teamValidation(){
    var cat_id = $('#cat_id').val();    

    if(cat_id == "0"){
        alert("Category is invalid...");    
        return false;
    }else{
        $('#addForm').submit(); 
        return false;
    }
}

<form action="<?php echo SITE_URL; ?>adminteams/saveDetail/" 
 name="addForm" id="addForm" onsubmit="return teamValidation();">
 <input type="hidden" name="cat_id" id="cat_id" value="1"/>
</form>

Firefox错误报告

enter image description here

它在其他浏览器中运行良好。

4 个答案:

答案 0 :(得分:5)

问题是您的表单多次提交。您可以使用以下任何一种方式实现目标:
HTML:

<form action="<?php echo SITE_URL; ?>adminteams/saveDetail/" name="addForm" id="addForm">
 <input type="hidden" name="cat_id" id="cat_id" value="1"/>
</form>

JAVASCRIPT:

$('#addForm').submit(function(){
    var cat_id = $('#cat_id').val();    

    if(cat_id == "0"){
        alert("Category is invalid...");    
        return false;
    }else{
        return true;
    }
});

另一种方式:
HTML:

<form action="<?php echo SITE_URL; ?>adminteams/saveDetail/" name="addForm" id="addForm" onsubmit="return teamValidation();">
     <input type="hidden" name="cat_id" id="cat_id" value="1"/>
    </form>

JAVASCRIPT:

function teamValidation(){
    var cat_id = $('#cat_id').val();    

    if(cat_id == "0"){
        alert("Category is invalid...");    
        return false;
    }else{
       return true;
    }
}

答案 1 :(得分:2)

cat_id文本框的值不为0时,您有一个无限循环的提交,然后阻止提交表单。删除else块,因为它没有实际用途

详细说明:

function teamValidation(){
    var cat_id = $('#cat_id').val();    

    if(cat_id == "0"){
        alert("Category is invalid...");    
        return false;
    }else{
        $('#addForm').submit(); // this submits the form again - does NOT proceed with this submission of the form
        return false; // returning false will prevent the submission from being completed
    }
}

<form action="<?php echo SITE_URL; ?>adminteams/saveDetail/" 
 name="addForm" id="addForm" onsubmit="return teamValidation();">
 <input type="hidden" name="cat_id" id="cat_id" value="1"/>
</form>

提交表单时,会调用teamValidation()。如果验证通过(执行了else块代码),则再次提交表单,这会导致再次调用teamValidation() ,然后再return false阻止此当前提交完成。 Firefox可能会崩溃,因为它发现自己处于循环中,它不断提交表单,永远不允许完成;浏览器在内存使用方面非常糟糕的事实可能也无济于事。

答案 2 :(得分:0)

您忘记关闭功能定义

function teamValidation(){
    var cat_id = $('#cat_id').val();    

    if(cat_id == "0"){
        alert("Category is invalid...");    
        return false;
    }else{
        $('#addForm').submit(); 
        return false;
    }
} <--- this

答案 3 :(得分:0)

你最后错过了一个'}'。不过,它不应该导致崩溃。 99%的Firefox安装问题。我刚刚在这里检查过。工作正常。您的代码没有问题。尝试卸载并重新安装Firefox。

另一个发现。您的表单无限期提交。也许你的其他浏览器更新,你的Firefox已经过时(无法处理无限期的递归,这就是它可能崩溃的原因)。

无论如何,请尝试替换以下内容:

$('#addForm').submit();

使用:

document.getElementById("addForm").submit();

希望有所帮助..

和平在你身上......