我已经编写了一个用于登录的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);
}
});
});
});
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);
?>
我无法找到这种情况发生的原因。任何人都可以帮助我吗?
答案 0 :(得分: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;
});
答案 1 :(得分:0)
尝试使用而不是使用$('.logSubmit').click(function(){ ...}
使用以下语法
$('.logSubmit').unbind('click').click(function(){ .....}
这可能会解决问题。
答案 2 :(得分:0)
尝试将 return false; 添加到.logSubmit -click活页夹中。此外,您可以尝试使用&lt; button&gt;替换提交类型的输入。由于提交与表格(提交)有关,在您的情况下情况并非如此。
答案 3 :(得分:0)
最后我得到了解决方案。由于空文本节点,问题发生了。 IE8为<input>,<select>,<img>
标记后的换行符生成空文本节点。
我在标签后删除了这些空格,现在问题解决了