我使用以下脚本提交带有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错误报告
它在其他浏览器中运行良好。
答案 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();
希望有所帮助..
和平在你身上......