Foros del Web » Programando para Internet » Javascript »

Como hacer el submit ?

Estas en el tema de Como hacer el submit ? en el foro de Javascript en Foros del Web. Tengo varios campos de texto en una lista y quiero que al escribir un numero en cualquiera de estos campos, se haga el submit del ...
  #1 (permalink)  
Antiguo 26/08/2007, 17:28
 
Fecha de Ingreso: diciembre-2004
Mensajes: 139
Antigüedad: 19 años, 4 meses
Puntos: 1
Como hacer el submit ?

Tengo varios campos de texto en una lista y quiero que al escribir un numero en cualquiera de estos campos, se haga el submit del mismo. Osea que cuando escriba algo no sea necesario apretar el boton de submitt sino que lo haga al escribir un boton.

El codigo del campo de texto es este:

Código:
<input name="cantidad" type="text" id="cantidad" value="1" onKeyUp="validarCantidad(this);">
La funcion es la siguiente:
Código:
function validarCantidad(frm) {
}
Pero no se como hacer que haga el submit desde la funcion !!!!
  #2 (permalink)  
Antiguo 26/08/2007, 19:13
Avatar de derkenuke
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: self.location.href
Mensajes: 2.665
Antigüedad: 20 años, 6 meses
Puntos: 45
Re: Como hacer el submit ?

Hola:

Se haría de esta manera
Código PHP:
document.forms["nombreDeTuFormulario"].submit(); 
Poniendo consecuentemente el valor del atributo name de tu etiqueta form correspondiente entre las comillas.

No hace falta ningún parámetro ni ningún this en éste caso si lo haces de esta manera.



Un saludo.
__________________
- Haz preguntas inteligentes, y obtendrás más y mejores respuestas.
- Antes de postearlo Inténtalo y Búscalo.
- Escribe correctamente tus mensajes.
  #3 (permalink)  
Antiguo 27/08/2007, 04:48
 
Fecha de Ingreso: diciembre-2004
Mensajes: 139
Antigüedad: 19 años, 4 meses
Puntos: 1
Re: Como hacer el submit ?

Esta bien lo que me pasaste. El tema es que yo los from los tengo en una lista que es un bucle en asp, todos se llaman form !! Entonces lo que tu codigo hace es hacer el submit del primer campo, pero por ahi el que modificaron era el 4....

Yo creo que lo solucinonaria haciendo algo asi :

document.form[4].submit();

El problema esta en que no se como averiguar el numero del formulario que estoy modificando.
  #4 (permalink)  
Antiguo 27/08/2007, 08:33
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Re: Como hacer el submit ?

Hola:

Cuando en un evento de cualquier control de un formulario se pone como argumento "this", se puede acceder a mucho más que el propio control, por ejemplo con this.form se obtiene todo el formulario... y se puede aplicar el método submit (por ejemplo)... entonces con tu validarCantidad(this), deberías poner en la declaración algo así:

function validarCantidad(frm) {
// controles que necesites...
frm.form.submit();
}

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #5 (permalink)  
Antiguo 27/08/2007, 09:57
 
Fecha de Ingreso: diciembre-2004
Mensajes: 139
Antigüedad: 19 años, 4 meses
Puntos: 1
Re: Como hacer el submit ?

Excelente Caricatos, me funciono perfecto !!

Ahora el ultimo contratiempo:
Como yo quiero retrasar el submit un segundo masomenos, uso SetTimeOut, pero lei por ahi que lo mejor es que el SetTimeOut llame a otra funcion aparte asi anda mejor, el tema es que nose como pasarle el valor de frm a la otra funcion:

Código:
function validarCantidad(frm) {
setTimeout(actualizar,2000);
}

function actualizar() {
frm.form.submit();
}
Lo que hace es esperar, y despues me tira error " 'frm' no esta definido "
  #6 (permalink)  
Antiguo 27/08/2007, 20:25
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Re: Como hacer el submit ?

Hola:

El nuevo problema requiere un nuevo planteamiento, ya que el uso de setTimeout (al igual que setInterval) tiene como primer parámetro una cadena, y ese "this" (this.form) es un objeto, por lo que hay que buscar la forma de conseguir que sea una cadena...

Si hay varios formularios, se puede averiguar el índice del mismo... voy a intentarlo:

function validarCantidad(frm) {
// controles que necesites...
for (i = 0, total = document.forms.length; i < total; i ++)
if (document.forms[i] == frm.form)
setTimeout("document.forms[" + i + "].submit()", 2000);;
}

Creo que me salió bordado... pruébalo y nos cuentas.

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #7 (permalink)  
Antiguo 28/08/2007, 06:25
 
Fecha de Ingreso: diciembre-2004
Mensajes: 139
Antigüedad: 19 años, 4 meses
Puntos: 1
Re: Como hacer el submit ?

Caricatos eres un genio !! anduvo a la perfeccion.
Yo intentaba algo parecido pero no sabia como escribir la sintaxis . Si no me hubieras ayudado nunca lo hubiera logrado.

Este es un codigo util para cuando alguien modifica la cantidad en un carrito.
Pasa que si usas un boton en cada cantidad es feo esteticamente ademas de que el usuario lo que hace es cambiar la cantidad y no apretar el boton de submit lo que de lugar a errores. Lo mismo pasa si sacas el boton de submit y usas OnChange ya que si el usuario no aprieta en otro lado despues de haber cambiado la cantidad tampoco se actualiza dando otra vez lugar a errores.
Con OnKeyUp es lo mejor, pero pasa que si escribes una cifra de 2 numeros, al terminar de apretar el primer numero ya actualiza, por eso el delay.

Espero que le sirva a alguien mas.
Gracias Caricatos !!!
  #8 (permalink)  
Antiguo 28/08/2007, 07:44
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Re: Como hacer el submit ?

Hola:

Me alegro de que vaya bien.

También es de agradecer que nos expliques el uso que le das, y el razonamiento que has usado para decidir el evento que has terminado usando.
Ya me han propuesto implementar un carrito, y valoro mucho estos comentarios.
Aprovecho para recomendarte de que alertes a los visitantes de tu página de que tengan javascript activado.

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:40.