Comunidad de diseño web y desarrollo en internet online

validar formulario en la misma pagina

Citar            
MensajeEscrito el 16 May 2008 01:33 pm
bueno primero no se si esto venga en este subforo porque tiene un poco de php y mas de javascript asi que aca lo pongo.

Tengo la siguiente funcion para valiar las celdas vacias en un formulario.

Código :

function valida_envio6()
{
   if (document.form1.tc.value =="")
      {alert('Por favor ingrese el Tipo de Cambio de Dolar'); document.form1.tc.focus(); return false;}
   if (document.form1.ufv.value =="")
      {alert('Por favor ingrese el Valor de la UFV'); document.form1.ufv.focus(); return false;}
   if (document.form1.ufvus.value =="")
      {alert('Por favor ingrese el valor de UFV a convertir'); document.form1.ufvus.focus(); return false;}
   document.form.submit();
}

y en el form.

Código :

<input name="submit6" type="button" value="CONVERTIR!!!" onclick="valida_envio6();">

y abajito tengo este codigo en PHP

Código :

<?php 
                $submit6 = $_GET['submit6'];
                $ufvus=$_GET['ufvus'];
                    if ($submit6 == true) 
                    {
                        $res6=($ufvus*$ufv)/$tc;                    
                    }              
                  $res6 = number_format($res6, 2, '.', ',');
                echo "<b>&nbsp;$res6&nbsp;&nbsp;Dolares</b>";
                  ?> 

cuando en el boton en el tipo le cambio a type="submit" ejecuta el codigo en PHP y sale el resultado que quiero, pero cuando le pongo para que ejecute la funcion en javascript ya no ejecuta el PHP.

aca esta la pagina.
http://desmond.110mb.com/cambio.php
saludos

Por desmond

23 de clabLevel



 

firefox
Citar            
MensajeEscrito el 16 May 2008 01:41 pm
¿Has probado con onSubmit() en <form>?

Código :


<form name="formulario" method="post" action="./" onSubmit="valida_envio6();">
[...]

Por Necrophasto

Claber

148 de clabLevel



Genero:Masculino  

Diseñador gráfico y web

opera
Citar            
MensajeEscrito el 16 May 2008 03:56 pm
sip y me ejecuta directamente el codigo php sin dejarme ingresar los datos en blanco.

aca esta como me sugeriste:
http://desmond.110mb.com/cambio2.php

Por desmond

23 de clabLevel



 

firefox
Citar            
MensajeEscrito el 16 May 2008 05:18 pm
Ahps... mmm...

Código :


<form name="formulario" method="post" action="./" onSubmit="valida_envio6(); return false">
[...]



return false luego de la validación...

Por Necrophasto

Claber

148 de clabLevel



Genero:Masculino  

Diseñador gráfico y web

opera
Citar            
MensajeEscrito el 16 May 2008 09:42 pm
No debes dar el resultado de la validación mediante un alert.
De hecho, haces varias cosas que ya están en desuso.
Aquí te propongo una de las maneras en que se podría hacer hoy día:

Código :

<script>
//Esta función, devuelve un elemento, llamado por su ID
//esta es la manera de proceder en el DOM del xHTML.
function GEBI(id)
{return document.getElementById(id);}

function valida_envio6()
{errores='';               //en esta variable, se almacenarán los fallos de la validación
 if (GEBI('tc').value=='') //así es como se llama a los elementos. Como tú hacías, es la forma "anticuada"
                           //Los erroes de validación, los almacenamos en una variable para mostrarlos después todos juntos.
   {errores+='Por favor ingrese el Tipo de Cambio de Dolar<br />'; GEBI('tc').focus();}
 if (GEBI('ufv').value=='')
   {errores+='Por favor ingrese el Valor de la UFV<br />';GEBI('ufv').focus();}
 if (GEBI('ufvus').value=='')
   {errores+='Por favor ingrese el valor de UFV a convertir<br />'; GEBI('ufvus').focus();}
 if(errores=='')           //Si se no se han almacenado errores (porque no los ha habido), se manda el formulario.
   {GEBI('form1').submit();}
      else                 //en cambio, si ha habido errores, se muestran todos juntos en un div, no mediante un alert.
   {GEBI('validacion').innerHTML=errores;
    return false;
   }
   
}
</script>
<form id="form1" action="http://desmond.110mb.com/cambio.php" method="GET">
<!-- Nos referimos a los elementos mediante a su ID, con lo que le ponemos un identificador único, a cada elemento que vamos a usar en nuestro script //-->
<input name="tc" id="tc" type="text" value="" /><br />
<!-- No uses tablas. Las tablas, se usan para mostrar datos tabulados, no para maquetar. Usa DIVS, si quieres, si no, ni eso. //-->
<!-- Además, en xHTML, todos los elementos se DEBEN cerrar. Fíjate, que los que antes no se cerraban, ahora se terminan con una barra inclinada: "/" //-->
<!-- por ejemplo, ahora se escribe: <input />, o <br />, pero también le pasa a <img /> y demás. //-->
<input name="ufv" id="ufv" type="text" value="" /><br />
<input name="ufvus" id="ufvus" type="text" /><br />
<input name="submit6" type="button" value="CONVERTIR!!!" onclick="valida_envio6();" />
</form>
<div id="validacion"></div>
NOTA: en los comentarios al código, tienes mis aportes.

Por cierto.
¿Me ha parecido entender que usas PHP para hacer una calculadora de cambio entre Dólares y otra moneda?
Mmmm... creo que es pasarse. Se puede hacer con JavaScript más que de sobra (aparte de ser lo más rápido, incluso, se puede hacer instantáneo, sin tener que apretar ningún botón para realizar el cambio)

Por El Oso Amoroso

Claber

1780 de clabLevel

6 tutoriales

 

Madrid, España, Europa, Eurasia, La Tierra, Sist.Solar, Vía Láctea, UNIVERSO

firefox
Citar            
MensajeEscrito el 16 May 2008 09:52 pm
ufa, gracias tienes alguna sugerencia para ese calculo de cambio de moneda?? alguna pagina? u alguna operacion facil para que de ahi en adelante yo lo pueda hacer.

Mil gracias.

Por desmond

23 de clabLevel



 

firefox
Citar            
MensajeEscrito el 16 May 2008 10:08 pm
Ehm...
Hace un par de días, terminé una calculadora de cambio de monedas.
El ejemplo es funcional.
Podrías añadir más tipos de monedas, añadiendo líneas a la matriz "monedas".
El ejemplo es "sencillo" si conoces JavaScript, aunque con paciencia, se puede descifrar.
Lo que pretendo, es mostrarte cómo con JSP, se puede hacer mucho más potente y cómodo, que con PHP

rizome, en un proyecto personal, escribió:

<script language="javascript">
function GEBI(str,id)
{return document.getElementById(str+id);}
function GEBIv(str,id)
{return parseFloat(GEBI(str,id).value);}

function cash_change(k)
{NUM=(!isNaN(GEBIv('c',k))?GEBIv('c',k):0);
GEBI('c',k).value=((GEBI('c',k).value.indexOf('.')>-1&&(GEBI('c',k).value.split('.')[1]==''||GEBI('c',k).value.split('.')[1]=='0'))?GEBI('c',k).value:Math.round(NUM*100)/100);
r=(k==1?2:1);
converted=GEBIv('c',k)*monedas[GEBIv('t',r)][2]/monedas[GEBIv('t',k)][2];
GEBI('c',r).value=Math.round(converted*100)/100;
}

var tiempos='13 May 2008';
var monedas=new Array(); //El 'valor de cambio', se expresa en "tantas monedas locales, valen 1€"
monedas[0]=new Array('EUR','Euro',1);
monedas[1]=new Array('USD','Dolar EEUU',1.5473);
monedas[2]=new Array('CAD','Dolar Canadá',1.5562);
monedas[3]=new Array('AUD','Dolar Australia',1.6408);
monedas[4]=new Array('HKD','Dolar HongKong',12.0649);
monedas[5]=new Array('GBP','Libra Esterlina',0.7938);
monedas[6]=new Array('JPY','Yen japonés',160.71);
monedas[7]=new Array('CNY','Yuan chino',10.8139);
monedas[8]=new Array('MXN','Peso mexicano',16.2191);

function time_write(){document.write(tiempos);}
function cash_write(k,u)
{HTMLcode='<select onchange="javascript:cash_change('+u+');" id="t'+u+'" class="inputs">';
for(i in monedas)
{HTMLcode+='<option value="'+i+'"'+(i==k?' selected="selected"':'')+'>('+monedas[i][0]+') '+monedas[i][1]+'</option>';}
HTMLcode+='</select>';
document.write(HTMLcode);
}
window.onload=function(){GEBI('c',1).focus();GEBI('c',1).select();}
</script>
<body>
<input onkeyUp="javascript:cash_change(1);" type="text" id="c1" value="0" />
<script>cash_write(1,1);</script>
Equivalen a:
<input onkeyUp="javascript:cash_change(2);" type="text" id="c2" value="0" />
<script>cash_write(0,2);</script>
</body>

Por El Oso Amoroso

Claber

1780 de clabLevel

6 tutoriales

 

Madrid, España, Europa, Eurasia, La Tierra, Sist.Solar, Vía Láctea, UNIVERSO

firefox
Citar            
MensajeEscrito el 16 May 2008 10:20 pm
genial gracias voy checarlo lo que pasa es que para lo que yo quiero necesito 2 tipos de cambio de moneda para recien cambiar a una tercera.

Por desmond

23 de clabLevel



 

firefox
Citar            
MensajeEscrito el 16 May 2008 11:02 pm
dos tipos de cambio de moneda?
Para qué?

Por El Oso Amoroso

Claber

1780 de clabLevel

6 tutoriales

 

Madrid, España, Europa, Eurasia, La Tierra, Sist.Solar, Vía Láctea, UNIVERSO

firefox
Citar            
MensajeEscrito el 19 May 2008 12:43 pm
uno es del dolar con repecto al boliviano, y el otro es uno que se llama ufv (unidad de fomento a la vivienda).

Por ejemplo para convertir 500 dolares a ufv necesito el tipo de cambio dolar a boliviano para que salga en bolivianos, y luego usar el tipo de cambio a ufvs para que esos bolivanos sean convertidos a ufv's.

saludos

Por desmond

23 de clabLevel



 

firefox
Citar            
MensajeEscrito el 19 May 2008 05:17 pm

desmond escribió:

uno es del dolar con repecto al boliviano, y el otro es uno que se llama ufv (unidad de fomento a la vivienda).

Por ejemplo para convertir 500 dolares a ufv necesito el tipo de cambio dolar a boliviano para que salga en bolivianos, y luego usar el tipo de cambio a ufvs para que esos bolivanos sean convertidos a ufv's.

saludos


Creo que usando el código que Rizome expuso puedes resolver ese problema, llamando a la función dos veces, la primera para convertir a bolivianos y luego a UFVs.

Por cierto, Rizome, veo que usas muchas veces el término JSP para referirte a código Javascript (externo, asumo) cuando es un acrónimo que se refiere a Java Server Pages (el cual es todo un tema aparte). JS es el término más utilizado para cuando hablamos de Javascript y así no nos confundimos :wink:

Por Yaraher

813 de clabLevel

1 tutorial

 

Callao, Perú

firefox
Citar            
MensajeEscrito el 19 May 2008 05:57 pm

Yaraher escribió:

[...] llamando a la función dos veces, la primera para convertir a bolivianos y luego a UFVs.
Efectivamente, la conversión se puede hacer tantas veces como se quiera... en pasos sucesivos, uno tras otro (que es lo que propone el amigo desmond). O dándole forma a la función, se puede hacer que devuelva el valor de una sóla vez.

De hecho, la línea fundamental, es:

Código :

function cash_change(k)
{
 [...]
 converted=GEBIv('c',k)*monedas[GEBIv('t',r)][2]/monedas[GEBIv('t',k)][2];
 [...]
} 
Que es la que hace el cambio.
No habría problema en cambiar la fórmula, para que tome todos los valores de referencia que se quiera.
De hecho, sería algo así:

Código :

converted_€ (€) = A_cambiar_$ ($) * Valor_€ (€/¥) / Valor_$ ($/¥);
converted_¥ (¥) = A_cambiar_€ (€) * Valor_¥ (¥/¥) / Valor_€ (€/¥);

Datos:
Valor_$ ($/¥) = Valor de 1¥, en $.
Valor_€ (€/¥) = Valor de 1¥, en €.
Valor_¥ (¥/¥) = 1;
Unidad de entrada:
A_cambiar_$ ($) = Cantidad a cambiar, en $;
Unidad de salida:
converted_¥ (¥) = Valor de los 'A_cambiar_$ ($)', expresada en ¥.

Evidentemente, se podrían anidar tantas transformaciones como se quisiera.


Yaraher escribió:

[...] Por cierto, Rizome, veo que usas muchas veces el término JSP para referirte a código Javascript, cuando es un acrónimo que se refiere a Java Server Pages. JS es el término más utilizado para cuando hablamos de JavaScript [...]
Muchísimas gracias por la anotación, pues ciertamente no tenía ni idea... Veo que he estado haciendo mucho tiempo el ridículo...:oops:

Por El Oso Amoroso

Claber

1780 de clabLevel

6 tutoriales

 

Madrid, España, Europa, Eurasia, La Tierra, Sist.Solar, Vía Láctea, UNIVERSO

firefox
Citar            
MensajeEscrito el 28 May 2008 08:49 pm
uhh, gracias hare la prueba y espero que salga como quiero.

Por desmond

23 de clabLevel



 

firefox
Citar            
MensajeEscrito el 02 Jun 2008 10:51 pm
gracias, me fue de mucha ayuda

Por desmond

23 de clabLevel



 

firefox
Citar            
MensajeEscrito el 03 Jun 2008 06:33 am
estupendo pues
:)

Por El Oso Amoroso

Claber

1780 de clabLevel

6 tutoriales

 

Madrid, España, Europa, Eurasia, La Tierra, Sist.Solar, Vía Láctea, UNIVERSO

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.