2012-06-29 15 views
7

he escrito un código html para iniciar la sesión como follwingcuestiones HTML en IE

<div id="wrapper"> 
<div id="page"> 
    <div class="aLogin"> 
     <label>User Name : </label> 
     <input type="text" class="lname" /> 
     <label>Password : </label> 
     <input type="password" class="lpwd" /> 
     <input type="submit" class="logSubmit" value="LOGIN" /> 
     <p class="lalert">test alert</p> 
    </div> 
</div> 

y jQuery escritas para validation.It reemplazar la alerta (en este caso he usado <p class="lalert">test alert</p>) de forma dinámica.
El problema es que cuando ejecuto esto en IE, el mensaje de alerta se muestra dos veces. Pero en otros navegadores no hay problema.

jQuery

$(document).ready(function(){ 
    $('.logSubmit').click(function(){ 
    var name = $('.lname').val(); 
    var pwd = $('.lpwd').val(); 
    $.post("/login.php",{name:name,pwd:pwd}).success(function(data){ 
     var obj = jQuery.parseJSON(data); 
     $('.lalert').fadeIn('slow'); 
     if(obj.success == 1){ 
      $('.lalert').css('color','#067800'); 
      $('.lname').val(''); 
      $('.pwd').val(''); 
      $('.lalert').html(obj.msg); 
     }else{ 
      $('.lalert').css('color','#CC0000'); 
      $('.lalert').html(obj.msg); 
     } 
    }); 
    }); 
}); 

login.php

<?php 
    $name = $_POST['name']; 
    $pwd = $_POST['pwd']; 
    $err['success'] = 0; 
    $err['msg'] = ''; 
    if($name != 'admin'){ 
    $err['msg'] = 'Invalid Name'; 
    }else if($pwd != 'admin'){ 
    $err['msg'] = 'Invalid Password'; 
    }else{ 
    $err['success'] = 1; 
    $err['msg'] = 'Success'; 
    } 
    echo json_encode($err); 
?> 

que no se puede encontrar por qué sucede esto. Alguien puede ayudarme..?

+6

donde es el código de jQuery? publique – thecodeparadox

+1

Probablemente haya conectado el manejador de eventos dos veces por algún motivo, pero sin el código jQuery es una suposición. –

+0

pon todo tu código en jsfiddle, entonces podemos averiguarlo, supongo. – Hardik

Respuesta

0

fin llegué el problema solución.El ocurre debido a vacío Nodo de texto. IE8 genera Nodo de texto vacío para los saltos de línea después de las etiquetas <input>,<select>,<img>.

me quitó esa espacios después de las etiquetas y ahora el problema resuelto

0

tratan de usar en lugar de utilizar $('.logSubmit').click(function(){ ...}

utilizar por debajo de la sintaxis

$('.logSubmit').unbind('click').click(function(){ .....} 

esto puede resolver el problema.

+0

Intenté esta sintaxis y ocurrió el mismo problema. – vinu

0

Intente agregar return false; a su .logSubmit -click Binder. Además, podría intentar reemplazar la entrada ingresada con un botón < > ya que los envíos están relacionados con los formularios (envío) y este no es el caso en su caso.

+0

He intentado su sugerencia ... pero el problema no resuelto – vinu

+0

** return false; ** es una mala práctica y ambigua - en este contexto, la mejor manera de evitar el comportamiento predeterminado es ** event.preventDefault() ** –

+0

Definitivamente de acuerdo con la idea '

1

Hola Ha olvidado escribir "return false".

$('.logSubmit').click(function(){ 
    var name = $('.lname').val(); 
    var pwd = $('.lpwd').val(); 
    $.post("/login.php",{name:name,pwd:pwd}).success(function(data){ 
     var obj = jQuery.parseJSON(data); 
     $('.lalert').fadeIn('slow'); 
     if(obj.success == 1){ 
      $('.lalert').css('color','#067800'); 
      $('.lname').val(''); 
      $('.pwd').val(''); 
      $('.lalert').html(obj.msg); 
     }else{ 
      $('.lalert').css('color','#CC0000'); 
      $('.lalert').html(obj.msg); 
     } 
    }); 
     return false; 
    }); 
+1

Stop (Mis) Uso de Return False: http://fuelyourcoding.com/jquery-events-stop-misusing-return-false/ –

+0

@Hermant He usado 'return false' en este caso ... pero el mismo problema ocurrió de nuevo – vinu

+0

@vinu Poner depurador y depurar el código. Para que pueda rastrear hacia dónde se aproxima esa alerta extra :-) –