Ver Mensaje Individual
  #1 (permalink)  
Antiguo 13/09/2007, 08:08
Immelman
 
Fecha de Ingreso: abril-2005
Mensajes: 38
Antigüedad: 19 años
Puntos: 0
Exclamación Validación de Formulario / Problema con IE

Hola amigos, les cuento:

Tengo un formulario sencillo el cual le estoy validando los campos con ajax y php. Lo que hace es que al salir del input este envía la petición de validación, mientras pone un texto de "Validando...", y luego entrega el mensaje de error y vuelve a colocar el valor en el input.

El problema ocurre en IE (v7), y la verdad no siempre, ya que el 90% del tiempo lo hace bien, pero a veces se congela en la parte de "Validando...", y mi única opción es refrescar la página. Esto lo probé con Mozilla mil veces y me funcionó bien al 100%.

Alguien me puede ayudar por favor, ya que no tengo ninguna pista de porqué ocurrirá esto.

Acá pongo el código sobre un solo input a modo de ejemplo, ya que todos los otros los hago de la misma forma:

Input:

Código PHP:
Nombre:<br>
<
input value="" maxlength="40" type="text" size="35" name="inpName" id="inpName" onblur="vldName()"> <br>
<
div class="" id="error_nombre"></div
JS:

Código PHP:
//AJAX
function newAjaxUser() { 
    var 
xmlhttp=false
    try 
    { 
        
xmlhttp=new ActiveXObject("Msxml2.XMLHTTP"); //navegadores no IE
    
}
    catch(
e)
    { 
        try
        { 
            
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); //para IE
        

        catch(
E) { xmlhttp=false; }
    }
    if (!
xmlhttp && typeof XMLHttpRequest!="undefined") { xmlhttp=new XMLHttpRequest(); } 

    return 
xmlhttp
}

//valida nombre
function vldName() {
    var 
divMensaje=document.getElementById("error_nombre");
    var 
input=document.getElementById("inpName");
    var 
valor=input.value;
    var 
textoAccion="Validando...";
    
input.disabled=true;
    
input.value=textoAccion;
    
    
//ajax
    
var ajax=newAjaxUser();
    
ajax.open("POST""user_auth_fns.php"true);
    
ajax.setRequestHeader("Content-Type""application/x-www-form-urlencoded");
    
ajax.send("name="+valor);
        
    
ajax.onreadystatechange=function() {
        if (
ajax.readyState==4) {
            
input.value=valor;
            
input.disabled=false;
            var 
response ajax.responseText;
            if (
response == 0) { 
                
divMensaje.innerHTML='<font color="#ff0000">Nombre no válido</font>';
            } else if (
response == 1) {
                
divMensaje.innerHTML='Nombre válido';
            }            
        }
    }

PHP:

Código PHP:
if (isset($_POST["name"])) {
        if (!
ereg("^[a-zA-ZñÑáéíóúÁÉÍÓÚäëïöüÄËÏÖÏ\ ]{2,40}$",$name))
        echo 
"1";
    else
        echo 
"0";

Muchas gracias por su ayuda!