Confusion de la función Submit
Mi nueva obsesión es Javascript, y ahora mientras programaba una función para validar una forma me di cuenta de algo que parece un extraño bug en Firefox.
Lo que se hace en estos casos es interceptar el envío con javascript mediante el evento onSubmit, se hacen las validaciones necesarias en una función aparte y después — si es pertinente— se reanuda el envío mediante el método submit() del objeto form. Un formulario de ejemplo:
Asi todo funciona perfectamente, pero si añadimos un atributo name="submit" al botón de envíar
todo se complica. En este caso f.submit() me da un error que dice f.submit is not a function
puesto que firefox está refiriendose al dichoso botón en lugar de referirse al metodo submit().
Sé que la respuesta más obvia es cambiar ese atributo name por cualquier otra cosa, pero en el script en el que estoy trabajando esa es una opción, ya que no tendré control sobre el formulario sobre el que se ejecutara el script. Siendo asi, no tengo idea como solucionar este pequeño problemilla.
¿Hay en la audiencia algun gurú de javascript que quiera ayudarme?
como no soy un guru, entonces no te iba a contestar.. pero cómo dejarte morir solo? jeje
el problema no es tan difícil.. como lo planteas probablemente sí se complique un poco, pero es cuestión de reestructurar las cosas
prueba con lo siguiente:
function validar(e){
// validación
valida = false;
if(valida){
return true;
} else {
return false;
}
}
y el form quedaría así
form action=”process.php” onsubmit=”return validar();”
y ya, todo debe quedar bien.
un saludo
Y si en lugar del atributo name usas id y te refieres a el con el DOM ?
document.getElementById(“submit”).submit();
Aunque personalmente, me quedo con la opción de Fael, siempre lo he hecho así
Yo tenía el mismo problema y ni siquiera usando document.getElementById chutaba, la opción Fael me ha salvado.
Gracias.
muchas gracias Fael, tenia exactamente el mismo problema y me lo solucionaste, Dios te bendiga :p.
muchas gracias tambien a todos aquellos que hacen posible q este sitio siga en pie.
Contribuye a la discusión