Foros del Web » Programando para Internet » Javascript »

Funcion dentro de otra funcion

Estas en el tema de Funcion dentro de otra funcion en el foro de Javascript en Foros del Web. Hola a todos! tengo una finción dentro de otra que pierde el valor. Se trata de un formulario en el que al cambiar el valor ...
  #1 (permalink)  
Antiguo 20/07/2011, 03:14
 
Fecha de Ingreso: enero-2005
Mensajes: 66
Antigüedad: 19 años, 3 meses
Puntos: 0
Pregunta Funcion dentro de otra funcion

Hola a todos!
tengo una finción dentro de otra que pierde el valor.
Se trata de un formulario en el que al cambiar el valor de un campo ejecuta la función valida y al final lanza el formulario actualizando ese campo.
El caso es que sólo se me actualiza el último campo del formulario, no el que ha cambiado el valor.
El codigo utilizado es el siguiente:
Código HTML:
 <td width="110" align="center" bgcolor="#FFF2FF">
<script language="javascript"> 
<!--
function valida(min,cantidad) {
if (cantidad<min) { 
 alert("Su puja debe ser mayor que el precio de salida: "+min +"€") ;  
    } else {
                  if (cantidad % 5 != 0){
 	  alert("Las pujas deben acabar en 0 ó 5") ; 
                              } else { return true;}}
}
-->
</script> 
 <input name="cantidad" type="text" id="cantidad" onChange="if (valida(<?php echo $v['precio'] ?>,a<?php echo $v['identificador'] ?>.cantidad.value)==true){alert("hola");}"  value="<?php echo number_format($result,2) ?>" size="8">

 <input name="id" type="hidden" id="id"  value="<?php echo $v['id'] ?>"></td> 
Probé a hacerlo con las dos funciones dentro del Onchange pero me lanza simepre el submit. No consigo que pare si el valor introducido en el campo cumple alguna de las condiciones anteriores. lo intenté con break, pero nada!. El código es este:

Código HTML:
 <td width="110" align="center" bgcolor="#FFF2FF">
<script language="javascript"> 
<!--
function valida(min,cantidad) {
if (cantidad<min) { 
 alert("Su puja debe ser mayor que el precio de salida: "+min +"€") ; break; 
    } else {
                  if (cantidad % 5 != 0){
 	  alert("Las pujas deben acabar en 0 ó 5") ; break;
                              } 
}
-->
</script> 
 <input name="cantidad" type="text" id="cantidad" onChange="document.a<?php echo $v['identificador'] ?>.submit(valida(<?php echo $v['precio'] ?>,a<?php echo $v['identificador'] ?>.cantidad.value))"  value="<?php echo number_format($result,2) ?>" size="8">

 <input name="id" type="hidden" id="id"  value="<?php echo $v['id'] ?>"></td> 
Así que podría resumirlo en como evitar que una función que está dentro de otra pare:
p. ej: funcion1 (funcion2(valor)) --> si funcion2 = false ; que funcion1 no se ejecute

Gracias por la ayuda de antemano.
Un saludo,
dvdaya

Última edición por dvdaya; 20/07/2011 a las 03:44
  #2 (permalink)  
Antiguo 20/07/2011, 04:16
 
Fecha de Ingreso: mayo-2011
Mensajes: 14
Antigüedad: 13 años
Puntos: 1
Respuesta: Funcion dentro de otra funcion

Hola !!


La verdad que la forma en la que llamas a la funcion es un poco raro, estas seguro de que la expresion "a<?php echo $v['identificador'] ?>.cantidad.value" funciona correctamente.

Comprueba con mensajes alerts los parametros recibidos en la entrada de la funcion que lo que recibes es lo esperado. Y luego asegurate de que los parametros no son String sino Int o Float, para ello puedes usar las funciones parseFloat o parseInt de javascript.

Suerte con eso.
  #3 (permalink)  
Antiguo 20/07/2011, 04:26
 
Fecha de Ingreso: enero-2005
Mensajes: 66
Antigüedad: 19 años, 3 meses
Puntos: 0
Respuesta: Funcion dentro de otra funcion

Sí, funciona perfecto.
Al utilizar el submit sólo, cono el siguiente código todo va ok.

Código HTML:
<input name="cantidad" type="text" id="cantidad" onChange="document.a<?php echo $v['identificador'] ?>.submit()"  value="<?php echo number_format($result,2) ?>" size="8"> 
Deja de funcionar correctamente al incluir la funcion valida (...) dentro del submi().
En realidad todo funciona, ya que al final se actualiza el valor. Lo que quiero es que no se actualice si las condiciones de la funcion valida() se cumplen. Quiero que se pare la función valida() y que ello provoque que el submit() no se produzca.
  #4 (permalink)  
Antiguo 20/07/2011, 04:32
 
Fecha de Ingreso: mayo-2011
Mensajes: 14
Antigüedad: 13 años
Puntos: 1
Respuesta: Funcion dentro de otra funcion

Puedes hacerlo todo mucho mas facil, simplemente con el onchange llama a la funcion. Y una vez que todas las condiciones que tu quieras se hayan cumplido mandar el formulario. Pues tambien puedes hacer el submit desde dentro de la funcion Javascript, en vez de devolver true. Pienso que eso seria lo mas sencillo, en este caso.
  #5 (permalink)  
Antiguo 20/07/2011, 04:45
 
Fecha de Ingreso: enero-2005
Mensajes: 66
Antigüedad: 19 años, 3 meses
Puntos: 0
Respuesta: Funcion dentro de otra funcion

Me imagino que te refieres a lo siguiente:
Código HTML:
function valida(min,cantidad) {
if (cantidad<min) { 
 alert("Su puja debe ser mayor que el precio de salida: "+min +"€") ; 
} else {
if (cantidad % 5 != 0){
 	alert("Las pujas deben acabar en 0 ó 5") ; } 
		    else { document.a<?php echo $v['identificador'] ?>.submit();}}
}
-->
</script>  
<input name="cantidad" type="text" id="cantidad" onChange="valida(<?php echo $v['precio'] ?>,a<?php echo $v['identificador'] ?>.cantidad.value)"  value="<?php echo number_format($result,2) ?>" size="8"> 
Si hago esto pierdo el id del campo y como tengo varios campos se actualiza el valor del último, no del campo en el que estoy cambio el valor.
Me explico mejor: Es un carrito de la compra ( de pujas) en el que al ver las pujas realizadas puedes cambiar la puja. como hay varias pujas hechas se actualiza la última, no la que estás cambiando.
  #6 (permalink)  
Antiguo 20/07/2011, 04:48
 
Fecha de Ingreso: mayo-2011
Mensajes: 14
Antigüedad: 13 años
Puntos: 1
Respuesta: Funcion dentro de otra funcion

La id siempre puedes pasarla como parametro adicional y recuperar el formulario con document.getElementByID.
  #7 (permalink)  
Antiguo 21/07/2011, 03:01
 
Fecha de Ingreso: enero-2005
Mensajes: 66
Antigüedad: 19 años, 3 meses
Puntos: 0
Respuesta: Funcion dentro de otra funcion

Gracias, lo miro .
Un saludo

Etiquetas: funcion, php, formulario
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 14:51.