Foros del Web » Programando para Internet » Javascript »

Verificar valor antes de hacer un submit

Estas en el tema de Verificar valor antes de hacer un submit en el foro de Javascript en Foros del Web. Hola a todos. Tengo una duda que es la siguiente: En un campo de tipo text debo evaluar si es vacio o no ; si ...
  #1 (permalink)  
Antiguo 27/10/2005, 03:26
Avatar de JuanKa  
Fecha de Ingreso: septiembre-2004
Mensajes: 468
Antigüedad: 19 años, 7 meses
Puntos: 1
Verificar valor antes de hacer un submit

Hola a todos.

Tengo una duda que es la siguiente:

En un campo de tipo text debo evaluar si es vacio o no ; si es vacio que se realice el submit caso contrario que envie un mensaje de "Escriba importe a pagar"

Pero tengo este form

<form action="http://www.miweb.com/enviar_importe.php?id=<? echo $var_id; ?>" method="post" name="frm_pago" id="frm_pago">

<input name="txt_importe" type="text" id="txt_importe" size="10" onKeypress="if ((event.keyCode < 48 || event.keyCode > 57) && (event.keyCode != 46 && event.keyCode != 44) ) {alert('Por Favor Ingrese solo Números.'); txt_importe.focus(); event.returnValue = false;}" >

<input name="btn_enviar" type="submit" id="btn_enviar" onclick="probar()" value="Enviar">


</form>

En javascript tengo esto pero no me evalua si el campo es vacio.

function probar()
{
if (document.frm_pago.txt_importe.value == "" )
{ alert "campo vacio" ; }

}


Ahora les explico cuando presiono sobre enviar y el campo esta vacio se me dirije a esa web :"http://www.miweb.com/enviar_importe.php..........", cosa que no debe hacer, sino debe de mostrar el mensaje "Escriba importe a pagar".

Como podria ser esto para que este correcto.

Gracias y Saludos
  #2 (permalink)  
Antiguo 27/10/2005, 03:34
Avatar de JavierB
Colaborador
 
Fecha de Ingreso: febrero-2002
Ubicación: Madrid
Mensajes: 25.052
Antigüedad: 22 años, 2 meses
Puntos: 772
Hola JuanKa

Pon así el formulario:

<form action="http://www.miweb.com/enviar_importe.php?id=<? echo $var_id; ?>" method="post" name="frm_pago" id="frm_pago" onsubmit = "return probar()">

<input name="btn_enviar" type="submit" id="btn_enviar" value="Enviar">

Y la función de esta forma:

function probar()
{
if (document.frm_pago.txt_importe.value == "" )
{ alert "campo vacio" ;
return false}
}

Espero que te funcione. Saludos,
  #3 (permalink)  
Antiguo 27/10/2005, 04:04
Avatar de JuanKa  
Fecha de Ingreso: septiembre-2004
Mensajes: 468
Antigüedad: 19 años, 7 meses
Puntos: 1
Hola amigo .

Me lo envia de todas manera cuando es vacio.
  #4 (permalink)  
Antiguo 27/10/2005, 08:31
Avatar de JavierB
Colaborador
 
Fecha de Ingreso: febrero-2002
Ubicación: Madrid
Mensajes: 25.052
Antigüedad: 22 años, 2 meses
Puntos: 772
Hola de nuevo.

Aquí tienes un error que se me había pasado, te faltan los paréntesis:

alert ("campo vacio") ;

El resto creo que está bien. Si no te funciona pon el formulario que estás usando a ver que pasa.

Saludos,
  #5 (permalink)  
Antiguo 28/10/2005, 01:17
Avatar de JuanKa  
Fecha de Ingreso: septiembre-2004
Mensajes: 468
Antigüedad: 19 años, 7 meses
Puntos: 1
ok. era ese era mi error, lo que pasa que a veces uno lleve un buen tiempo programando y aveces se nos va y eso es lo que me paso a mi.

Una Pregunta como podria verificar el envio del importe de pago es decir que solo puede escribir mediante los siguientes formatos.

1.500.20
1,500.20
1500.20
1500,00

Me parece que podria evaluar antes del envio mediante una expresion regular pero soy novato en esto.

El ingreso de solo numeros, la coma y el punto lo hago con:

onKeypress="if ((event.keyCode < 48 || event.keyCode > 57) && (event.keyCode != 46 && event.keyCode != 44) ) {alert('Por Favor Ingrese solo Números.'); txt_importe.focus(); event.returnValue = false;}"
y me va muy bien pero quisiera saber. como podria evaluar el formato del importe.

Gracias y saludos.
  #6 (permalink)  
Antiguo 28/10/2005, 03:38
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 18 años, 8 meses
Puntos: 39
hola JavierB y JuanKa!
Estу codigo hace lo que pides. Chequealo, y nos dices.
Código HTML:
<html>
<head>
<title>Untitled Document</title>
<script>
function validarNum(e)
{
    tecla = (document.all) ? e.keyCode : e.which;
    if (tecla == 8) return true;
    patron = /[0-9\,\.]/;
    te = String.fromCharCode(tecla);
    return patron.test(te);
}
</script>
</head>

<body>
<input name="txt_importe" type="text" id="txt_importe" size="10" onKeypress="return validarNum(event)" >
</body>
</html> 
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
  #7 (permalink)  
Antiguo 28/10/2005, 08:28
Avatar de JuanKa  
Fecha de Ingreso: septiembre-2004
Mensajes: 468
Antigüedad: 19 años, 7 meses
Puntos: 1
Hola .

Una pregunta pero como haria para relacionarlo con el ingreso de datos, es decir, la funcion

onKeypress="if ((event.keyCode < 48 || event.keyCode > 57) && (event.keyCode != 46 && event.keyCode != 44) ) {alert('Por Favor Ingrese solo Números.'); txt_importe.focus(); event.returnValue = false;}"

Con la funcion

function validarNum(e)
{
tecla = (document.all) ? e.keyCode : e.which;
if (tecla == 8) return true;
patron = /[0-9\,\.]/;
te = String.fromCharCode(tecla);
return patron.test(te);
}



<input name="txt_importe" type="text" id="txt_importe" size="10" onKeypress="return validarNum(event)" >
Ya que los dos usan el mismo evento onKeypress

o SERIA:

onKeypress="if ((event.keyCode < 48 || event.keyCode > 57) && (event.keyCode != 46 && event.keyCode != 44) ) {alert('Por Favor Ingrese solo Números.'); txt_importe.focus(); event.returnValue = false;}" ; onKeypress="return validarNum(event)" >

ES DECIR SEPARARADO POR EL ; DENTRO DEL <input name ="txt_importe" ................>


Gracias y saudos
  #8 (permalink)  
Antiguo 28/10/2005, 09:11
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 18 años, 8 meses
Puntos: 39
Hola otra vez!
La funcion validarNum(e), hace lo mismo que el codigo que tienes. En otras palabras, ya no necesitas todo lo que esta en el if.
Prueba el ejemplo que te di.
suerte
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 03:39.