Foros del Web » Programando para Internet » Javascript »

problema al validar un form

Estas en el tema de problema al validar un form en el foro de Javascript en Foros del Web. Hola: Ya llevo un rato revisando y aun no encuentro cómo solucionar este error. Estoy intentando validar un form y lo hace a medias, en ...
  #1 (permalink)  
Antiguo 22/11/2005, 16:43
 
Fecha de Ingreso: febrero-2005
Mensajes: 135
Antigüedad: 19 años, 9 meses
Puntos: 0
Pregunta problema al validar un form

Hola:

Ya llevo un rato revisando y aun no encuentro cómo solucionar este error.

Estoy intentando validar un form y lo hace a medias, en firefox marca los campos, pero a pesar de que no pasan, envia el form. Y en Iexplorer ni siquiera hace la validación y envía el form.

Qué hago ????

les paso las ligas del form y el js

http://idi.com.mx/simulador/simulador.html
http://idi.com.mx/simulador/validar.js

Gracias.
  #2 (permalink)  
Antiguo 22/11/2005, 16:52
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años, 7 meses
Puntos: 1284
Hola yconoclasta:

Intenté ver el código y no he podido... ¿Porqué no lo pegas en un mensaje...?

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #3 (permalink)  
Antiguo 22/11/2005, 17:15
 
Fecha de Ingreso: febrero-2005
Mensajes: 135
Antigüedad: 19 años, 9 meses
Puntos: 0
Gracias, pues es un poco largo, por eso no quería pegarlo, pero si eso facilita.

Código PHP:
function ValidaNumero(CampopOpcion
{
    var 
checkOK "0123456789.,";
    var 
checkStr QuitaFormato(Campo.value);
    var 
allValid true;
    var 
decPoints 0;
    var 
allNum "";
  for (
0;  checkStr.length;  i++) {
    
ch checkStr.charAt(i);
    for (
0;  checkOK.length;  j++)
      if (
ch == checkOK.charAt(j))
        break;
    if (
== checkOK.length) {
      
allValid false;
      break;
    }
    if (
ch == ".") {
      
allNum += ".";
      
decPoints++;
    }
    else if (
ch != ",")
      
allNum += ch;
  }
  if (!
allValid) {
    
alert("Escriba sólo dígitos en este campo.");
    
Campo.value ="0.00"
    
Campo.focus();
    
Campo.select();
    return (
false);
  }

  if (
decPoints 1) {
    
alert("Escriba un número válido en este campo.");
    
Campo.value ="0.00"
    
Campo.focus();
    
Campo.select();
    return (
false);
  }

  if (
QuitaFormato(Campo.value) == "")
        
Campo.value "0.00";

  if (
QuitaFormato(Campo.value) >     9999999999.99)
  {
    
alert("El importe no puede ser mayor a 9,999,999,999.99");
    
Campo.value ="0.00"
    
Campo.focus();
    
Campo.select();
    return (
false);
  }

  if (
pOpcion && QuitaFormato(Campo.value) != "")
        
Campo.value FormateaNumero(Campo.value);
  return (
true);
}


function 
FormateaNumero(Numero
{

    if (
Numero == "0")
    {
        
Numero "0.00"
    
}
    
    var 
numStr QuitaFormato(Numero);
    var 
pDecimal numStr.indexOf(".");
    var 
nDecimal SubCadena(numStrpDecimal3);
  var 
pNegativo numStr.indexOf("-");
  if (
pNegativo > -1)    
        var 
nEntero SubCadena(numStr1pDecimal );
    else
       var 
nEntero SubCadena(numStr0pDecimal );    
    var 
lEntero nEntero.length;
    var 
vCEntero lEntero;
    var 
nNumero ""
    
while (true) {
        if (
vCEntero 0) {
            
nNumero "," SubCadena(nEnterovCEntero 33) + nNumero            
            vCEntero 
vCEntero 3;
        }
        else {
            
nNumero SubCadena(nEntero0vCEntero) + nNumero;
            break;
        }
    }
    
nNumero nNumero nDecimal;
    if (
pNegativo > -1)    
      
nNumero "-" nNumero;
    return (
nNumero);
}


function 
SubCadena(pCadenapIniciopCuantos
{
var 
vSubcadena
var vCicCadena
   
  vSubcadena 
"";
  for (
vCicCadena 0vCicCadena pCuantosvCicCadena++) {
    
vSubcadena vSubcadena pCadena.charAt(pInicio vCicCadena); 
    }
  return 
vSubcadena;
}


function 
QuitaFormato(NumFormateado
{
var 
numAux "";
var 
numSCero "";
var 
vCicNumero;

for (
vCicNumero=0vCicNumero NumFormateado.lengthvCicNumero++)
    if (
NumFormateado.charAt(vCicNumero) != "0") {
      
numSCero SubCadena(NumFormateadovCicNumeroNumFormateado.length);
      break;
    }
for (
vCicNumero=0vCicNumero numSCero.lengthvCicNumero++)
    if (
numSCero.charAt(vCicNumero) != ",")
        
numAux numAux numSCero.charAt(vCicNumero);
if (
numAux.indexOf(".") == -1)
    
numAux numAux ".00";
var 
vPos numAux.indexOf(".");
var 
vLon numAux.length;
var 
varCero "00";
if (
vLon vPos 3)
    
numAux numAux SubCadena(varCerovLon vPos 12);
if (
numAux.charAt(0) == ".") {
    
numAux "0" numAux;
}
return (
numAux);
}


function 
EsCero(Campo,Mensaje)
{
    if (
parseFloat(QuitaFormato(Campo.value)) <= )
    {
        
alert (Mensaje);
        
Campo.focus();
        
Campo.select();
        return (
false);
    }
    else
    {
        return (
true);
    }
}


function 
SeleccionaTexto(Campo)

{
    
//Si el valor del campo es diferente de ""
    
if (Campo.value != "")
    {
        
Campo.select();
    }
}


function 
ValidaCampos()
{
    
//Obtiene la clave del tipo de crédito que ha sido seleccionado
    
TipoCredito document.form1.ddlDestinoCredito.options[document.form1.ddlDestinoCredito.selectedIndex].value;
    if (
TipoCredito == "0")
    {
        
alert ("Debe seleccionar el Destino de Crédito");
        
document.form1.ddlDestinoCredito.focus();
        return 
false;
    }

    
//Obtiene la clave de la plaza que ha sido seleccionado
    
Plaza document.form1.ddlCiudad.options[document.form1.ddlCiudad.selectedIndex].value;
    if (
Plaza == "(Seleccione una Ciudad)")
    {
        
alert ("0");
        
document.form1.ddlCiudad.focus();
        return 
false;
    }

    
//Obtiene la clave del tipo de simulador seleccionado
    
TipoSimulador document.form1.ddlCalculadoPor.options[document.form1.ddlCalculadoPor.selectedIndex].value;
    if (
TipoSimulador == "0")
    {
        
alert ("Debe seleccionar la opción por la cual desea hacer la simulación");
        
document.form1.ddlCalculadoPor.focus();
        return 
false;
    }
    
    
//Verifica que el importe no este en ceros
    
if (TipoSimulador == "Comprar Casa")
        
mensaje "¿Cuál es el Valor del Bien?";
    if (
TipoSimulador == "Construir Casa")
        
mensaje "¿Cuáles son los Ingresos Mensuales?";
    if (
TipoSimulador == "Remodelar Casa o Departamento")
        
mensaje "¿Cuál es el Importe Solicitado?";
    if (
EsCero(document.form1.txtMonto,mensaje)== false)
        return 
false;
    
    
//Manda llamar el resultado
    
parent.frames["fraResultado"].location.href="resultado.aspx?TipoCredito=" TipoCredito "&TipoSimulador=" TipoSimulador "&Importe=" document.form1.txtImporte.value "&Plaza=" Plaza;
    return 
true;

  #4 (permalink)  
Antiguo 22/11/2005, 18:27
Avatar de Cap.Buscapina  
Fecha de Ingreso: octubre-2004
Ubicación: Argentina
Mensajes: 836
Antigüedad: 20 años, 1 mes
Puntos: 4
el problema es cuando no ingresa dentro de ningun if (de la funcion ValidaCampos()) y por lo tanto la variable mensaje no existe.

declará
Cita:
mensaje=""
como variable global y creo que puede funcar.


saludos
__________________
by Capitán Buscapina
.
  #5 (permalink)  
Antiguo 22/11/2005, 20:06
 
Fecha de Ingreso: febrero-2005
Mensajes: 135
Antigüedad: 19 años, 9 meses
Puntos: 0
Cap.Buscapina, ya ví lo que me dices, lo he corregido pero aun así no valida.

Alguna otra idea?

Cabe mencionar que en el explorer me marca error al cargar la página, si me posiciono y selecciono el campo de monto. El error es en la linea 46 y dice que "se esperaba un objeto"

Última edición por yconoclasta; 22/11/2005 a las 20:14
  #6 (permalink)  
Antiguo 22/11/2005, 21:01
Avatar de Cap.Buscapina  
Fecha de Ingreso: octubre-2004
Ubicación: Argentina
Mensajes: 836
Antigüedad: 20 años, 1 mes
Puntos: 4
ups , ahora caigo

probá cambiar esta linea

Cita:
<form name="form1" method="post" action="simulador.aspx" id="form1" class="cotizador" onsubmit="return ValidaCampos()">


suerte
__________________
by Capitán Buscapina
.
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 18:47.