键盘功能的替代方案

时间:2014-11-26 09:48:45

标签: javascript php jquery ajax

当我们点击登录弹出窗口时,我正在弹出一个弹出窗口!我想在登录按钮被激活之前用数据库检查用户名和密码..使用ajax和密码字段的密钥功能!

但keyup是为密码字段中键入的每个字符触发...但是要求是在输入密码字段后应调用ajax并显示结果...是否有替代密钥?

现在正在为每个输入的字符输入错误的密码"在输入正确的密码后,它将登录,...但我想在用户完全输入密码时显示错误密码(如果密码错误)

<script type="text/javascript">
    $(document).ready(function() {
       $("#upwd").change(function()
       //$('#upwd').on('input', function() 
       //$('#upwd').keyup(_.debounce(doSomething , 500), function() {
       var upwd = $("#upwd").val();
       var uemail = $("#uemail").val();
       var msgbox = $("#status");
       //alert(uemail);
       //alert(upwd);
       //setTimeout(function() { 
       //if($('#upwd').val() == upwd){ 
       $.ajax({ 
           type: "POST",
           url: "checkl_login.php",
           data: "uemail="+ uemail,
           success: function(msg){
           $("#status").ajaxComplete(function(event, request){
           if(msg == 'OK') {
             msgbox.html(msg);
             //return false;
           } else {
             msgbox.html(msg); 
           }
       });
    }
   });
     return false;
   });

  });

</script>
在span ......中的状态ID中显示

错误。

checkl_login.php代码也是完美的.....

3 个答案:

答案 0 :(得分:3)

尝试使用.focusout()事件,如下所示: -

$("#upwd").on("focusout",function(){
 //..your code..
});

除了这些事件之外,还可以使用登录按钮并在点击按钮时检查验证。

答案 1 :(得分:1)

使用change事件代替keyup

答案 2 :(得分:0)

恕我直言,这是更好的:

  1. 使用keyup(它允许处理任何键盘更改。例如,通过退格键删除符号)
  2. 处理'粘贴'(因为用户可以复制/粘贴密码但不能输入密码)
  3. 如果用户在某段时间内没有按任何键(例如,在1秒内),则验证密码 - setTimeout和clearTimeout应该有帮助
  4. 如果用户在ajax请求正在进行时开始输入
  5. ,则中止ajax请求

    即。您可以尝试以下内容:

    $(document).ready( function() {
    
        var ajax_h;
        var delayMilliseconds = 1000; // i.e. = 1 second
        var timeoutId;
    
        function checkAuth() {
            if (ajax_h) {
                ajax_h.abort();
            }
            ajax_h = $.ajax(
                // PUT YOUR CODE HERE
            );
        }
    
        $("#upwd").on('keyup paste', function () {
            if (timeoutId) {
                clearTimeout(timeoutId);
            }
            timeoutId = setTimeout(checkAuth, delayMilliseconds);
        });
    
    });