2

我使用以下代码检查登录和密码有效性:

$(function (){
$('#submit').click(function(){
        var login=$('#login').val();
        var pwd=$('#pwd').val();
        if(login=='' && pwd ==''){
            $('#div').show().html("Please enter your login and password").delay(2000).fadeOut();
            return false;
        };
        if(login !='' && pwd !=''){
        var dataall={'login':login,'pwd':pwd};
        $.ajax({                                      
            url: "test.php",
            type:"POST",
            data: dataall,                                                      
            dataType: "json",                    
            success: function(data)        
            {
                var login = data[0]; 
                var password = data[1];                 
                if (login==0 || password ==0){
                 return false;
                 $('#login').val('');
                 $('#pwd').val('');
                 $('#div').show().html("The login or password is incorrect. Please try again.").delay(2000).fadeOut();
                }
            } 
        });

        }
}); 
}); 

ajax 调用运行良好,但如果登录名或密码错误,则会出现问题:表单始终提交!即使我return false; 提前感谢您的帮助

4

1 回答 1

0

由于您使用 ajax 来验证表单数据,因此不需要实际提交表单。

success: function(data)        
{
  var login = data[0]; 
  var password = data[1];                 
  if (login==0 || password==0){
    $('#login').val('');
    $('#pwd').val('');
    $('#div').show().html("The login or password is incorrect. Please try again.").delay(2000).fadeOut();
   return;
  }
  // when you have reached this line then the user entered correct user/pass
  // if you really like the form to be submitted you could do something like this:
  $('#submit').parents('form').submit();
} 

就像我在评论中所说的那样,您应该将您的return false声明移到处理程序的底部,$('#submit').click()以避免提交表单。

这是一个有效的解决方案:

$('#submit-button').click(function(){
    var login=$('#login').val();
    var pwd=$('#pwd').val();
    if(login=='' && pwd ==''){
        $('#div').show().html("Please enter your login and password").delay(2000).fadeOut();
        return false;
    };
    var dataall={'login':login,'pwd':pwd};
    $.ajax({                                      
        url: "form.php",
        type:"POST",
        data: dataall,                                                      
        dataType: "json",                    
        success: function(data)        
        {
            var login = data[0]; 
            var password = data[1];                 
            if (login==0 || password ==0){ 
             $('#login').val('');
             $('#pwd').val('');
             $('#div').show().html("The login or password is incorrect. Please try again.").delay(2000).fadeOut();
             return false;
            }
            $('#form').submit();
        } 
    });
    return false;
  }); 
});

form如果您在实际标签中添加 id ,则上述代码有效,form并且我还认为您应该使用最新的 jQuery 库来进行submit()调用。另外,请注意我在回调中更改了pwand 和to log。请注意,您必须将提交按钮的更改为.passwordloginsuccessidsubmit

于 2013-10-31T12:42:36.527 回答