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: 21 años, 8 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: 24 años, 6 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: 21 años, 8 meses
Puntos: 0
Gracias, pues es un poco largo, por eso no quería pegarlo, pero si eso facilita.

Código PHP:
function ValidaNumero(Campo, pOpcion) 
{
    var 
checkOK = "0123456789.,";
    var 
checkStr = QuitaFormato(Campo.value);
    var 
allValid = true;
    var 
decPoints = 0;
    var 
allNum = "";
  for (
i = 0;  i < checkStr.length;  i++) {
    
ch = checkStr.charAt(i);
    for (
j = 0;  j < checkOK.length;  j++)
      if (
ch == checkOK.charAt(j))
        break;
    if (
j == 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(numStr, pDecimal, 3);
  var 
pNegativo = numStr.indexOf("-");
  if (
pNegativo > -1)    
        var 
nEntero = SubCadena(numStr, 1, pDecimal - 1 );
    else
       var 
nEntero = SubCadena(numStr, 0, pDecimal );    
    var 
lEntero = nEntero.length;
    var 
vCEntero = lEntero;
    var 
nNumero = ""
    
while (true) {
        if (
vCEntero - 3 > 0) {
            
nNumero = "," + SubCadena(nEntero, vCEntero - 3, 3) + nNumero            
            vCEntero 
= vCEntero - 3;
        }
        else {
            
nNumero = SubCadena(nEntero, 0, vCEntero) + nNumero;
            break;
        }
    }
    
nNumero = nNumero + nDecimal;
    if (
pNegativo > -1)    
      
nNumero = "-" + nNumero;
    return (
nNumero);
}


function 
SubCadena(pCadena, pInicio, pCuantos) 
{
var 
vSubcadena
var vCicCadena
   
  vSubcadena 
= "";
  for (
vCicCadena = 0; vCicCadena < pCuantos; vCicCadena++) {
    
vSubcadena = vSubcadena + pCadena.charAt(pInicio + vCicCadena); 
    }
  return 
vSubcadena;
}


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

for (
vCicNumero=0; vCicNumero < NumFormateado.length; vCicNumero++)
    if (
NumFormateado.charAt(vCicNumero) != "0") {
      
numSCero = SubCadena(NumFormateado, vCicNumero, NumFormateado.length);
      break;
    }
for (
vCicNumero=0; vCicNumero < numSCero.length; vCicNumero++)
    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(varCero, vLon - vPos - 1, 2);
if (
numAux.charAt(0) == ".") {
    
numAux = "0" + numAux;
}
return (
numAux);
}


function 
EsCero(Campo,Mensaje)
{
    if (
parseFloat(QuitaFormato(Campo.value)) <= 0 )
    {
        
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: 22 años
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: 21 años, 8 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: 22 años
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 20:05.