2012-03-13 168 views
6

我使用下面的脚本提交使用jQuery一种形式,但火狐已经产生了崩溃的错误报告,请让我知道我做错了。Firefox的形式提交问题与jQuery

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

它在其他浏览器工作正常。

回答

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; 
    } 
} 
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 
+0

这不是一个问题 – 2012-03-13 13:57:01

+0

这不是一个问题}我只是忘记了这一点,当我在计算器把这个问题 – 2012-03-13 14:02:53

0

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

另一个发现。您的表单将无限期提交。也许你的其他浏览器更新,你的Firefox过时了(不能处理无限期递归,这就是为什么它可能会崩溃)。

不管怎么说,尝试更换如下:

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

有:

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

希望帮助..

祝你平安......

+0

[Rü确保人,这是安装的问题.... – 2012-03-13 14:00:00

+0

这不是一个问题}我只是忘记了这一点,当我把这个问题在stackoverflow – 2012-03-13 14:02:44

+0

浏览器旨在应付javascript错误。如果浏览器发现错误,则停止执行Javascript。由于Javascript错误导致的崩溃不是今天的事情。很抱歉地说,但你的安装肯定有问题。 – 2012-03-13 14:03:10

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可能会崩溃,因为它发现自己处于一个不断提交表单的循环中,永远不会完成;浏览器在内存使用方面非常糟糕的事实可能也无济于事。

+0

在我的代码中没有无限循环提交 – 2012-03-13 14:04:10

+1

@Samad是的,有。您在提交表单时调用'teamValidation()'。在else块中,你执行'$('#addForm')。submit()'哪个**再次提交表单**,然后'返回false',这**防止提交完成**。 – 2012-03-13 14:05:36

+0

我使用这个脚本进行其他验证 – 2012-03-13 14:13:14