2012-03-13 16 views
6

Estoy usando la siguiente secuencia de comandos para enviar un formulario con jQuery; sin embargo, Firefox ha generado un informe de error, por favor, avíseme qué estoy haciendo mal.Problema de envío de formulario de Firefox 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> 

informe de errores Firefox

enter image description here

Se está trabajando muy bien en otros navegadores.

Respuesta

5

El problema es que su formulario se envía varias veces.Usted puede lograr su objetivo utilizando cualquiera de las siguientes maneras:
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; 
    } 
}); 

de otro 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

que se olvidó de cerrar la definición de la función

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

Esto no es un problema –

+0

Esto no es una cuestión de} me olvido esto cuando pongo esta pregunta en StackOverflow –

0

Usted ha omitido una '}' al final. Aún así, no debería causar un bloqueo. 99% un problema con su instalación de Firefox. Acabo de consultar con el mío aquí. Funciona correctamente No hay problema con tu código. Intente desinstalar y reinstalar Firefox.

Otro descubrimiento. Su formulario se envía indefinidamente. Quizás tus otros navegadores sean más recientes y tu Firefox esté desactualizado (no es capaz de manejar recursiones indefinidas, por lo que puede fallar).

De todas formas, intente reemplazar la siguiente:

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

con:

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

Espero que ayude ..

paz sea con vosotros ...

+0

R u hombre de que este es el tema de la instalación .... Esto no es –

+0

un problema de} simplemente me olvido de esto cuando puse esta pregunta en stackoverflow –

+0

Los navegadores están diseñados para hacer frente a los errores de javascript. Los navegadores detienen la ejecución de Javascript si encuentran errores. Fallar debido a errores de Javascript no es cosa de hoy. Perdón por decirlo, pero seguramente hay un problema con su instalación. –

2

Usted tiene una bucle infinito de enviar, y luego evitar el envío de, su formulario cuando el valor deEl cuadro de textono es 0. Elimine el bloque else, ya que no sirve para nada.

Para entrar en más detalles:

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> 

Al enviar el formulario, teamValidation() es llamado. Si la validación se aprueba (se ejecuta el código de bloque else), envíe el formulario nuevamente que causa que teamValidation() vuelva a llamarse, luego return false, lo que impedirá que se complete este envío actual. Es probable que Firefox falle porque se encuentra en un bucle en el que constantemente envía un formulario, que nunca puede completar; el hecho de que el navegador es bastante horrible en términos de uso de la memoria probablemente tampoco ayude.

+0

No hay ningún bucle infinito en mi código –

+1

@Samad Sí, lo hay. Llama al 'teamValidation()' cuando envía el formulario. En el bloque else, haces '$ ('# addForm'). Submit()' que ** envía el formulario de nuevo **, luego 'return false' que ** impide que se complete el envío **. –

+0

estoy usando este script para otra validación –

Cuestiones relacionadas