2012-06-29 42 views
7

Tôi đã viết một mã html để đăng nhập như follwingvấn đề HTML trong 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> 

và viết jQuery cho validation.It thay thế alert (ở đây tôi sử dụng <p class="lalert">test alert</p>) tự động.
Vấn đề là, khi tôi chạy điều này trong IE, thông báo cảnh báo được hiển thị hai lần. Nhưng trong các trình duyệt khác không có vấn đề gì.

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); 
?> 

tôi không thể tìm thấy lý do tại sao điều này xảy ra. Ai có thể giúp tôi..?

+6

mã jQuery ở đâu? post rằng – thecodeparadox

+1

Nó có lẽ sẽ có kèm theo trình xử lý sự kiện hai lần vì một lý do nào đó nhưng không có mã jQuery là một sự đoán. –

+0

đặt tất cả các mã của bạn trong jsfiddle sau đó chúng tôi có thể tìm ra tôi đoán. – Hardik

Trả lời

0

Cuối cùng tôi đã nhận vấn đề solution.The xảy ra do rỗng chữ Node. IE8 tạo ra Nút văn bản trống cho ngắt dòng sau <input>,<select>,<img> thẻ.

Tôi đã xóa không gian đó sau thẻ và bây giờ vấn đề đã được giải quyết

0

cố gắng sử dụng thay vì sử dụng $('.logSubmit').click(function(){ ...}

sử dụng dưới cú pháp

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

này có thể giải quyết vấn đề này.

+0

Tôi đã thử cú pháp này và cùng một vấn đề xảy ra. – vinu

0

Thử thêm trả về false; vào tập tin .logSubmit -click của bạn. Ngoài ra, bạn có thể thử thay thế đầu vào đã nhập bằng một nút < > vì các lần gửi có liên quan đến biểu mẫu (trình) và đây không phải là trường hợp trong trường hợp của bạn.

+0

Tôi đã thử đề xuất của bạn ... nhưng sự cố chưa được giải quyết – vinu

+0

** trả về false; ** là hành vi không tốt và mơ hồ - trong ngữ cảnh này cách tốt nhất để ngăn chặn hành vi mặc định là ** event.preventDefault() ** –

+0

Tôi chắc chắn đồng ý với ý tưởng '

1

Xin chào Bạn đã quên viết "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

Dừng (Mis) Sử dụng Trả về Sai: http://fuelyourcoding.com/jquery-events-stop-misusing-return-false/ –

+0

@Tôi đã sử dụng 'return false' trong này trường hợp .. nhưng cùng một vấn đề xảy ra một lần nữa – vinu

+0

@vinu Đặt trình gỡ lỗi và gỡ lỗi mã. Do đó bạn có thể theo dõi nơi cảnh báo bổ sung đang đến :-) –

Các vấn đề liên quan