Foros del Web » Programando para Internet » Javascript »

validar formularios en asp

Estas en el tema de validar formularios en asp en el foro de Javascript en Foros del Web. Hola! este es un codigo que utilizo para validar los fromularios, el problema que me da es que cuando me aparece el cuadro de alerta ...
  #1 (permalink)  
Antiguo 14/02/2006, 09:40
 
Fecha de Ingreso: enero-2006
Mensajes: 9
Antigüedad: 18 años, 3 meses
Puntos: 0
validar formularios en asp

Hola! este es un codigo que utilizo para validar los fromularios, el problema que me da es que cuando me aparece el cuadro de alerta donde me da el error de no introducir nada o de introducir comillas, al darle acepatar no me redirecciona a la pagina principal(pagina html) sino que se va a la págin de asp. La idea es que se quede en esa pagina cuando me muestra el error, por fa el que me pueda ayudar se lo agradezco.


<script language="javascript">
function valida(){
if(document.logg.login.value.length==0 && document.logg.password.value.length==0 ){
alert('Cadena vacia');
redir();
return false;
}

if(blanco()){
alert("Introduzca el login y password");
redir();
return false;
}


if(delequot()){
alert("Evite el uso de comillas");
redir();
return false;
}
return true;
}

function delequot(){
if(document.logg.login.value.indexOf("\"")!=-1 || document.logg.login.value.indexOf("\'")!=-1 ||
document.logg.password.value.indexOf("\"")!=-1 || document.logg.password.value.indexOf("\'")!=-1){
return true;
}
return false;
}

function envia(){
if(valida()){document.logg.submit}
}

function blanco(){

var entry = document.logg.login.value;
var blsp = 0;
var size = entry.length;

for(i=0; i<size; i++){
if(entry.charAt(i).match(" ")){
blsp++;
}
}

var entry2 = document.logg.password.value;
var blsp2 = 0;
var size2 = entry.length;

for(i=0; i<size2; i++){
if(entry2.charAt(i).match(" ")){
blsp2++;
}
}
if(size == blsp || size2==blsp2){
return true;
}
return false;
}

function redir(){
location.href = "pantalla1.2.html"//Aqui entre comillas va el nombre de tu pagina de login y password
}

</script>
  #2 (permalink)  
Antiguo 14/02/2006, 09:56
Avatar de ElAprendiz  
Fecha de Ingreso: enero-2002
Ubicación: Maipu, Chile
Mensajes: 3.706
Antigüedad: 22 años, 3 meses
Puntos: 2
esto tiene que ver Javascript mas que con ASP
__________________
Manual de ASP Avanzado ;-)
  #3 (permalink)  
Antiguo 14/02/2006, 17:29
 
Fecha de Ingreso: enero-2006
Ubicación: Buenos Aires, Argentina
Mensajes: 299
Antigüedad: 18 años, 3 meses
Puntos: 5
Buenas.

No entiendo muy bien para qué querés redireccionar, la verdad. Me parece que lo que necesitás es que si no se pasa la validación, que no se envíe el formulario: anulás el envío, o sea, te quedás en la misma página. Si pasa la validación, enviás el formulario: no hace falta redireccionar nada, el atributo "action" le indica al navegador a dónde debe enviar el pedido (y a qué dirección te va a llevar).

En el tag <form> tendrías que tener un atributo onSubmit="return valida()" (Hay también otras formas de hacerlo pero ésta es la más sencilla). Cuando trates de enviar el formulario, si la función valida devuelve false, no se hace ningún envío. Si devuelve true, se manda. Y eso sería todo.

La función valida tendría que ser algo así:

Código:
function valida() {
     if (los campos están vacíos) {
          alert("algún mensaje de error");
          return false; 
    }
    return true;
}
Si los campos están vacíos, mostrás el error y devolvés false. Al usar return, la función deja de ejecutarse, o sea que nunca va a llegar a return true. Al devolver false, te quedaría algo así formulario.onsubmit = false; Con lo cual, el form no se envía.

Si los campos no están vacíos, la función no entra al if y se encuentra con return true; devuelve true y entonces el resultado es: formulario.onsubmit = true; O sea, que el formulario se envía.

Para hacer más validaciones y mantener las cosas ordenadas y limpias, podrías hacer una función valida() que se general. Ahí sólo llamás a otras funciones, que se encargan de hacer validaciones específicas (por ejemplo, campos en blanco, que no haya comillas, etc.

Por ej:
Código:
function valida() {
     var mensaje = "";
     mensaje += validarVacios();
     mensaje += validarBlanco();
     mensaje += validarOtraCosa();
     /*
     Cada validación va a devolver un mensaje en caso de error. O sea que si llegás al final 
     y la variable mensaje, donde se guardan justamente todos los mensajes, no está vacía
     quiere decir que se detectaron errores. Mostrás los errores y devolvés false para 
     que no se envíe el formulario.
     */
     if (mensaje != "") {
           alert(mensaje);
           return false;
     }
     /* 
       Si no hay nada dentro de la variable mensaje, quiere decir que se pasó la validación
       Entonces, devolvés true, para que se mande el formulario normalmente 
     */
     return true;
}

function validarVacios() {
    var mensaje = "";
    var campo = document.formulario.alguncampo;
    var campo2 = document.formulario.alguncampo2;
    if (campo == "") { // si está vacío
           mensaje += "el campo xxx es obligatorio\n"; // guardás un mensaje y agregás un salto de línea
    }
    if (campo2 == "") {
           mensaje += "el campo xxx es obligatorio\n";  
          /*
          mensaje de error en caso de que el segundo campo esté vacío 
          de esta manera ambas validaciones son independientes y podés mostrar
          en qué campo está el o los errores
          */ 
      }
      return mensaje;
}
Bueno, esa es la idea, hay que implementarlo pero de esta forma el código queda más claro, es más fácil de mantener/modificar, te permite validar distintas cosas "modularmente" y podés mostrarle al usuario, de una sola pasada y sin abrir 800 ventanitas, en dónde está el error para que lo pueda corregir más fácilmente.


Suerte
Califa
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 02:26.