2007-09-22 10:13 @467 |
|
|
zozo666
Perlero Frecuente
|
Registrado: 2007-05-26 10:36 @483 Mensajes: 139
|
|
|
Funciones JavaScript dentro de otra función
|
Tengo una duda: ¿Cómo llamo a funciones JavaScript dentro de otra función JavaScript? Tengo el siguiente problema: yo tenía dos funciones JavaScript que corrían en el onclick de un botón: - <input class="boton" type="reset" value="Enviar mensaje" name="cargamensaje" onClick="exported_func( ['valor','mostrar'], ['resultdiv'], cambiarDisplay('scroll','formMensaje','botenv','mensajeok');">
Bueno, lo que hice a este botón que se encuentra dentro de un formulario fue agregarle otra función que se encarga de validar los campos: - <input class="boton" type="reset" value="Enviar mensaje" name="cargamensaje" onClick="valida_mensaje(this),exported_func( ['valor','mostrar'], ['resultdiv'], cambiarDisplay('scroll','formMensaje','botenv','mensajeok');">
Bueno, ahora el tema es que yo las primeras dos funciones las tengo que ejecutar si el formulario está bien validado, o sea: Código: if (está válido) { exported_func( ['valor','mostrar'], ['resultdiv']; cambiarDisplay('scroll','formMensaje','botenv','mensajeok'); } else { alert("aun no esta validado"); } ¿Se entiende? O sea, ¿cómo pongo las funciones para que me anden de la misma manera que me andaban en el onclick del botón? Muchas gracias
|
2007-09-22 10:53 @495 |
|
|
 |
explorer
Administrador
|
Registrado: 2005-07-24 18:12 @800 Ubicación: Valladolid, España Mensajes: 10270
|
|
|
|
Creas una nueva función, donde metes la lógica de programa que tu mismo has descrito, precedida por la validación. Y es esa la función que llamas con el onclick. Puedes también hacer que las funciones devuelvan valores lógicos de verdadero o falso, y luego en el onclick, usar los operadores lógicos and para ejecutar las funciones. Actualización: mejor usar el operador ternario (no probado): - <input class="boton" type="reset" value="Enviar mensaje" name="cargamensaje" onClick="( valida_mensaje(this) ) ? exported_func( ['valor','mostrar'], ['resultdiv'] ), cambiarDisplay('scroll','formMensaje','botenv','mensajeok'): return false;">
_________________ JF^D Perl programming
|
2007-09-22 11:27 @519 |
|
|
zozo666
Perlero Frecuente
|
Registrado: 2007-05-26 10:36 @483 Mensajes: 139
|
|
|
|
Pero, ¿qué tendría que poner en la validación?, o sea está en la función con sus respectivas instrucciones según el IF: Código: if (está válido) { exported_func( ['valor','mostrar'], ['resultdiv']; cambiarDisplay('scroll','formMensaje','botenv','mensajeok'); } else { alert("aun no esta validado"); } en la parte de exported_func y cambiarDisplay ¿qué pondría para que me ande el operador ternario que me dijiste?: - <input class="boton" type="reset" value="Enviar mensaje" name="cargamensaje" onClick="( valida_mensaje(this) ) ? exported_func( ['valor','mostrar'], ['resultdiv'] ), cambiarDisplay('scroll','formMensaje','botenv','mensajeok'): return false;">
|
2007-09-22 12:10 @549 |
|
|
zozo666
Perlero Frecuente
|
Registrado: 2007-05-26 10:36 @483 Mensajes: 139
|
|
|
|
Creo que no me explico bien, no importa lo que hagan las funciones, yo lo que necesito es solamente que lo que estaba antes en el onclick, me haga exactamente lo mismo, pero si está VALIDADO. Es la siguiente lógica: - if (está válido) {
- exported_func( ['valor','mostrar'], ['resultdiv'];
- cambiarDisplay('scroll','formMensaje','botenv','mensajeok');
- }
- else {
- alert("aun no esta validado");
- }
Yo quiero que se ejecute las funciones que tengo ahí (exported_func y cambiarDisplay) cuando el formulario está validado, en estos casos no importa que hacen las funciones, lo que necesito es que solamente se ejecuten las funciones de la misma manera que lo hacían cuando no validaba, o sea directamente en el onClick. ¿Qué es lo que tengo que hacer para que las funciones se ejecuten una vez validado el formulario, dónde las llamo? ¿cómo las llamo? Gracias. Acá dejo el código y remarco la parte donde tendrían que ir las funciones: Using javascript Syntax Highlighting function valida_mensaje(){
document.frmenv.val1.value=Trim(document.frmenv.val1.value);
document.frmenv.calificacion.value=Trim(document.frmenv.calificacion.value);
//valido el nombre
if (document.frmenv.val1.value==0){
alert("Por favor ingrese el mensaje");
document.frmenv.val1.focus();
return false;
}
var pepez=0;
for(i=0; ele=document.frmenv.elements[i]; i++){
if (ele.type=='radio')
if (ele.checked)
{pepez=1;break;}
}
if (pepez==1)
{
ACA TENDRIAN QUE IR LAS FUNCIONES, OSEA:
exported_func( ['valor','mostrar'], ['resultdiv'];
cambiarDisplay('scroll','formMensaje','botenv','mensajeok');
}else{
alert('Debe calificar');
return false;
}
} De esta manera, ¿realizan lo mismo que si las hubiese llamado del onclick? El tema es que yo llamo desde el onclik a la función validar_mensaje que puse arriba, entonces, o me muestra los alert de lo que falta, o me tiene que realizar las funciones que le pedí. ¿Cómo hago esto? Muchas gracias. Para explicarme mejor te dejo los formularios. Este es el formulario que anda perfecto, o sea sin validar: - <form action="" name="frmenv" id="frmenv" method="post">
- <textarea style="width:160px; height:100px;" name="val1" id="val1" class="textbox1" cols="10"></textarea>
- <input type="radio" value="1" name="calificacion" id="calificacion">1
- <input type="radio" value="2" name="calificacion" id="calificacion">2
- <input type="radio" value="3" name="calificacion" id="calificacion">3
- <input type="radio" value="4" name="calificacion" id="calificacion">4
- <input type="radio" value="5" name="calificacion" id="calificacion">5
- <input class="boton" type="reset" value="Enviar mensaje" name="cargamensaje" onClick="exported_func( ['val1','calificacion'], ['resultdiv'] ),cambiarDisplay('scroll','formMensaje','botenv','mensajeok');">
- </form>
Este es el formulario que llama a la función validar_mensaje(). - <form action="" name="frmenv" id="frmenv" method="post">
- <textarea style="width:160px; height:100px;" name="val1" id="val1" class="textbox1" cols="10"></textarea>
- <input type="radio" value="1" name="calificacion" id="calificacion">1
- <input type="radio" value="2" name="calificacion" id="calificacion">2
- <input type="radio" value="3" name="calificacion" id="calificacion">3
- <input type="radio" value="4" name="calificacion" id="calificacion">4
- <input type="radio" value="5" name="calificacion" id="calificacion">5
- <input class="boton" type="reset" value="Enviar mensaje" name="cargamensaje" onClick="validar_mensaje(this);">
- </form>
Con esto creo que queda bien claro lo que tengo que hacer. Muchas gracias nuevamente por tu ayuda.
|
2007-09-23 13:14 @593 |
|
|
zozo666
Perlero Frecuente
|
Registrado: 2007-05-26 10:36 @483 Mensajes: 139
|
|
|
|
|
Muchas gracias. Ya pude solucionar el problema. En principio había probado de la forma que recién me dijo explorer... pero no anduvo. Ahora que me lo dijiste, explorer, probé de nuevo y anduvo perfecto.
|
|
Página 1 de 1
|
[ 7 mensajes ] |
|
| Reglas del Foro |
No puedes abrir nuevos temas en este Foro No puedes responder a temas en este Foro No puedes editar tus mensajes en este Foro No puedes borrar tus mensajes en este Foro No puedes enviar adjuntos en este Foro
|
|
Socializa |
 |
|