7

我已经编写了一个用于登录的 html 代码,如下所示

<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>

并编写了 jQuery 进行验证。它<p class="lalert">test alert</p>动态地替换了警报(这里我使用了)。
问题是,当我在 IE 中运行它时,警告消息显示了两次。但在其他浏览器中没有问题。

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

登录.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);
?>

我找不到为什么会这样。有谁能够帮我..?

4

4 回答 4

1

嗨,您忘记写“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;
  }); 
于 2012-07-02T05:09:11.933 回答
0

最后我得到了解决方案。问题是由于Empty Text Node引起的。IE8为标签 后的换行符生成空文本节点。<input>,<select>,<img>

我删除了标签后的空格,现在问题解决了

于 2012-07-11T13:01:21.240 回答
0

尝试使用而不是使用$('.logSubmit').click(function(){ ...}

使用以下语法

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

这可能会解决问题。

于 2012-06-29T08:53:36.767 回答
0

尝试添加return false; 到您的 .logSubmit -单击活页夹。此外,您可以尝试用 <button> 替换提交类型的输入,因为提交与表单(提交)相关,而您的情况并非如此。

于 2012-06-29T08:54:00.103 回答