javascript - 用户名输入 If Else block 无法正常工作/Javascript - jQuery - AJAX

标签 javascript jquery ajax forms

您好,我有一张注册表。现在我正在编码用户名检查部分。我想做 3 个控件,如果它们都可以的话我想显示提交按钮。应该是这样的。

But it always shows me first else block:

Kullanıcı adı 3 ile 20 karakter arasında olmalıdır.

myscript.js

$(document).ready(function() {

    var uname = false;
    var umail = false;
    var upass = false;
    var rpass = false;

    $("#rname").keyup(function() {

        var username = $('#rname').val().length;

        if ((username > 3) && (username < 20)) {

            uname = true;

            if (uname == true) {

                var chars = /^[a-zA-Z0-9\.\_]*$/;

                $("#rname").keyup(function() {

                    var value = this.value;

                    if(chars.test(value) == true) {

                        uname = true;

                        if (uname == true) {

                            $("#rname").keyup(function() {

                                var user_name = $('#rname').val();

                                $.post("check.php", { username: uName },
                                function(result){

                                    $("#notName").html(result).show();

                                })

                            });     // Check is the username available.

                        };

                    } // if chars okey

                    else {

                        uname = false;
                        $("#notMail").html("Kullanıcı adın sadece harf, rakam, alt çizgi ve nokta içerebilir.").show();

                    }

                });     // Check not allowed chars in username.

            }; // if lenght okey

        } // usernamelenght

        else {

            uname = false;
            $("#notName").html("Kullanıcı adı 3 ile 20 karakter arasında olmalıdır.").show();

        }

    });     // keyup

});     // Document ready

index.html

<?php
    require_once "check.php";
?>

<html>
<head>
    <title>jQuery</title>
    <meta charset="UTF-8">
    <link rel="stylesheet" type="text/css" href="sstyle.css"/>
    <link href='https://fonts.googleapis.com/css?family=Open+Sans:' rel='stylesheet' type='text/css'>
</head>
<body>
    <div class="formwrapper">
        <form method="post" action="" name="form">
            <input type="text" id="rname" class="inputa" name="username" placeholder="Kullanıcı Adı">
            <span id="notName"></div>
        </form>
    </div>

    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.2/jquery.min.js"></script>
    <script src="myscript.js"></script>
</body>
</html>

检查.php

<?php

    $DB_host = "localhost";
    $DB_name = "dbeva";
    $DB_user = "root";
    $DB_pass = "";

    try {

        $DB_con = new PDO("mysql:host={$DB_host};dbname={$DB_name}",$DB_user,$DB_pass);
        $DB_con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

        }

    catch(PDOException $e) {

        echo $e->getMessage();

        }

    if (isset($_POST["username"])) {

        $username = $_POST["username"];

        $stmt = $DB_con->prepare("SELECT user_name FROM users WHERE user_name=:uname");
        $stmt->execute(array(':uname'=>$username));
        $row = $stmt->fetch(PDO::FETCH_ASSOC);

        if($row['user_name'] == $username) {

            echo "Not";

        }

        else {

            echo "Okey";

        }
    }
?>

最佳答案

@Brown 我修改了你的代码。也许这段代码可以帮助您解决该问题。

$(document).ready(function() { 
    $("#rname").keyup(function() {

            var username = $('#rname').val();

      var uname = checkUsername(username);
      if (!uname) return;

      var umail = charValidation(username);
      if (!umail) return;

            // code to show button...

    }); 
});   


function checkUsername(username){
     var charLength = username.length;
   if((charLength > 3) && (charLength < 20)){           
      if (checkUsernameAlreadyExists(username)) {
                    $("#notName").html("Not exists").show(); //is not already exists.
            return true;
      } 
      else{
        $("#notName").html("Already Exists ").show(); //is already exists.
        return false;
      } 
   }
   else{
     $("#notName").html("Kullanıcı adı 3 ile 20 karakter arasında olmalıdır.").show();
     return false;
   }                
}

function charValidation(username){
    var chars = /^[a-zA-Z0-9\.\_]*$/;
  if(chars.test(username)){
        return true;
  } 
  else{
    $("#notMail").html("Kullanıcı adın sadece harf, rakam, alt çizgi ve nokta içerebilir.").show();
    return false;
  }
}
function checkUsernameAlreadyExists(username){
    $.post("check.php", { username: username },function(result){
     return result;  //true or false;
  });   
}

关于javascript - 用户名输入 If Else block 无法正常工作/Javascript - jQuery - AJAX,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37138935/

相关文章:

javascript - 获取d3.js中输入选择的数据

jquery - 使用 html2canvas 进行阿拉伯语编码

javascript - jquery ui : calling . droppable 在不存在的 div 上不起作用

javascript - 如何在javascript中获取php echo结果

javascript - $broadcast 仅在使用有限字符时触发

javascript - 当里面的文本大于输入本身时,如何使 html 输入扩展

javascript - 根据 div 的某些值填充 div

javascript - 如何使多个 XMLHttpRequest for JSON 形成不同的位置?

javascript - 如何通过AJAX 将数据传递到PHP 页面,然后在另一个DIV 中显示该页面?

jquery - 如何从不同域上的 API 请求 JSON 数据?