Foros del Web » Programando para Internet » Javascript »

Problema con onblur

Estas en el tema de Problema con onblur en el foro de Javascript en Foros del Web. Buenas, He estado rompiéndome la cabeza para averiguar cómo hacerlo, he buscado info y al final me he rendido a la evidencia de que necesito ...
  #1 (permalink)  
Antiguo 17/05/2013, 08:37
Avatar de alberthp  
Fecha de Ingreso: abril-2013
Mensajes: 12
Antigüedad: 8 años, 1 mes
Puntos: 0
Problema con onblur

Buenas,

He estado rompiéndome la cabeza para averiguar cómo hacerlo, he buscado info y al final me he rendido a la evidencia de que necesito ayuda.

Tengo un html así:

Código PHP:
<form action="index.html" method="post" id="form1" novalidate>
<
label for="nombre">Nombre </label>
<
input type="text" id="nombre" name="nombre" onfocus "this.nextSibling.setAttribute('class', ''); this.setAttribute('class','');" tittle="Minimo 5 caracteres alfanumericos sin espacios" maxlength="15" required/><span class=""></span>
<
label for="password">Contraseña</label>
<
input id="p1" name="password" type="password" pattern=".{8,}" maxlength "20" required title="Minimo 8 caracteres y al menos un numero o mayus."/><span class=""></span>
<
label for="password">Confirmar Contraseña</label>
<
input id="p2" type='password' required pattern=".{8,}"><span class=""></span>
<
label for="email">Email </label>
<
input type="email" id="email" name="email" required title="Direccion de correo completa y valida ([email protected])"/><span class=""></span>
<
button id="enviar" name="enviar" type="submit">Enviar</button>
</
form
Y la intención es que, sin tener ningún onblur en el HTML, al quitar el foco de uno de los inputs, salte el js que valide el campo correspondiente.

El js que tengo es este:

Código PHP:
window.onload = function()
{
     var 
inputs document.querySelectorAll('input');
     for (var 
k=0inputs.length-1k++)
     {
           
inputs[k].onblur = function()
       {
         for (var 
k=0k<inputs.length;k++)
             {
            if (
inputs[k] == document.getElementById('p2'))
            {
                var 
pass1 document.getElementById('p1');
                var 
pass2 document.getElementById('p2');
                     
pass2.addEventListener('onblur'checkpass(pass1pass2), false);
            }else{
                
inputs[k].addEventListener('onblur'check(inputs[k]), false);
            }
           }
        }
    } 
El problema viene que al pulsar en un campo, me comprueba TODOS los campos. Obviamente, sé que el error viene del segundo for. Pero si lo quito, me queda con el valor de k del primer for que, a su vez, si lo quito, no me hace nada.

Obviamente, sé que el error es mío, pero ni sé solucionarlo ni detectar dónde está, más allá de los dos for.

¿Alguien podría ayudarme o indicarme una manera de hacerlo sin que haya ningún "onblur" en el HTML, por favor? Gracias de antemano.
  #2 (permalink)  
Antiguo 17/05/2013, 09:31
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 12 años, 10 meses
Puntos: 1532
Respuesta: Problema con onblur

le estás asignando a cada input una función anónima para su evento onblur y dentro de la misma recorres todos los inputs añadiéndoles nuevamente otro manjeador para el evento onblur , el resultado es una cascada infinita del mismo evento, analiza bien que quieres hacer porque hasta donde veo lo estás aplicando mal.
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #3 (permalink)  
Antiguo 17/05/2013, 12:23
Avatar de alberthp  
Fecha de Ingreso: abril-2013
Mensajes: 12
Antigüedad: 8 años, 1 mes
Puntos: 0
Respuesta: Problema con onblur

Sí, la verdad es que estoy tan confundido como el código xD

La idea es que salvo p2, que debe comprobar si es igual a p1, todas llamen a la función check(input).
  #4 (permalink)  
Antiguo 17/05/2013, 13:45
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 12 años, 10 meses
Puntos: 1532
Respuesta: Problema con onblur

elimina esta linea inputs[k].onblur = function() y como tal la función anónima eliminando sólo el } final, de modo que te quede el ciclo, con dicho ciclo ya asignas los eventos
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...

Etiquetas: campos, html, input, js, onblur, select
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 16:02.