2012-03-13 8 views
6

Sto utilizzando il seguente script per inviare un modulo con jQuery, tuttavia Firefox ha generato un rapporto di errore irreversibile, per favore fatemi sapere cosa sto facendo male.Modulo di Firefox presenta un problema con 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> 

rapporto di errore Firefox

enter image description here

Si sta lavorando bene in altri browser.

risposta

5

Il problema è che il modulo viene inviato più volte.È possibile raggiungere il tuo obiettivo utilizzando uno dei seguenti modi:
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; 
    } 
}); 

altro modo:
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

Hai dimenticato di chiudere la vostra definizione di funzione

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

Questo non è un problema –

+0

Questo non è un problema di} ho appena dimenticare questo quando ho messo questa domanda StackOverflow –

0

Ti sei perso una '}' alla fine. Tuttavia, non dovrebbe causare un crash. 99% un problema con l'installazione di Firefox. Ho appena controllato con il mio qui. Funziona correttamente Non ci sono problemi con il tuo codice. Prova a disinstallare e reinstallare Firefox.

Un'altra scoperta. Il tuo modulo viene inviato indefinitamente. Forse i tuoi altri browser sono più recenti e il tuo Firefox non è aggiornato (non è in grado di gestire le ricorsioni indefinite, motivo per cui potrebbe verificarsi un arresto anomalo).

In ogni modo, provare a sostituire il seguente:

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

con:

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

Speranza che aiuta ..

La pace sia su di voi ...

+0

R u sicuro che l'uomo questo è il problema di installazione .... –

+0

Questo non è un problema di} ho appena dimenticato questo quando ho messo questa domanda in StackOverflow –

+0

I browser sono progettati per far fronte con errori javascript. I browser interrompono l'esecuzione di Javascript se trovano errori. Crash a causa di errori di Javascript non è una cosa di oggi. Spiacente, ma c'è sicuramente un problema con la tua installazione. –

2

Hai ciclo infinito di invio, quindi impedire l'invio di, il modulo quando il valore delLa casella di testonon è 0. Rimuovere il blocco else, poiché non serve a scopi reali.

Per andare più in dettaglio:

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> 

Quando si invia il modulo, teamValidation() viene chiamato. Se la convalida supera (il codice di blocco else viene eseguito), si invia nuovamente il modulo che provoca la chiamata di teamValidation() ancora, quindi return false che impedirà il completamento di questa richiesta corrente. È probabile che Firefox si arresti in modo anomalo perché si trova in un ciclo in cui invia costantemente un modulo, che non può mai essere completato; il fatto che il browser sia abbastanza terribile in termini di utilizzo della memoria probabilmente non aiuta neanche.

+0

Non c'è un ciclo infinito di invio nel mio codice –

+1

@Samad Sì, c'è. Si chiama 'teamValidation()' quando si invia il modulo. Nel blocco else, si esegue '$ ('# addForm'). Submit()' which ** invia di nuovo il modulo **, quindi 'return false' che ** impedisce l'invio della compilazione **. –

+0

Sto usando questo script per altre validazioni –

Problemi correlati