2012-03-13 164 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