如何在文本框再次显示on blur事件后修复?

时间:2012-08-30 04:11:24

标签: php jquery html ajax onblur

输入输入后,文本框再次显示,我不知道如何修复。这是输出的屏幕截图:

enter image description here

在模糊后再次显示

这是我的代码,我不知道如何解决这个问题。虽然我的功能运作良好

<!DOCTYPE HTML>
    <html lang="en">
    <head>
        <meta charset="utf-8">
        <title>Amateur</title>
        <link rel="stylesheet" href="css/reset.css" type="text/css">
        <script src="http://code.jquery.com/jquery-1.8.0.js"></script>
        <script>
            function check_email() {
                var email=$("#txtEmail").val();
                $.ajax(
                {
                    type:"POST",
                    url:"index.php",
                    data: "email="+email,
                    success:function(msg) {
                        $("#chkEmail").html(msg);
                    }
                });
                return false;
            }
        </script>
    </head>

    <body>
    <form method="post">
        <label for="txtEmail">E-mail:</label>
            <input id="txtEmail" name="email" type="email" onblur="return check_email()">
        <label id="chkEmail" for="txtEmail"></label>
        <?php
        if(isset($_POST['email']))
        {
            $user='root';

            $pdo=new PDO('mysql:host=localhost;dbname=class;charset=utf8',$user);

            $email=$_POST['email'];

            $stmt=$pdo->prepare('SELECT user_email from tbl_users WHERE user_email=:email LIMIT 1');
            $stmt->execute(array(':email'=>$email));

            if($stmt->rowCount()>0) {
                echo 'E-mail already use.';
            }
            else {
                echo 'E-mail not use.';
            }   
        }
        ?>
    </form>
    </body>
    </html>

2 个答案:

答案 0 :(得分:1)

像这样更改您的代码。问题是您将数据发布到您所在的同一页面,并获得整个代码作为对您的AJAX请求的响应。因此,如果您在POST上退出执行,您将只收到相关消息。

 <?php
        if(isset($_POST['email']))
        {
            $user='root';

            $pdo=new PDO('mysql:host=localhost;dbname=class;charset=utf8',$user);

            $email=$_POST['email'];

            $stmt=$pdo->prepare('SELECT user_email from tbl_users WHERE user_email=:email LIMIT 1');
            $stmt->execute(array(':email'=>$email));

            if($stmt->rowCount()>0) {
                echo 'E-mail already use.';
            }
            else {
                echo 'E-mail not use.';
            } 
            exit;  
        }
        ?><!DOCTYPE HTML>
    <html lang="en">
    <head>
        <meta charset="utf-8">
        <title>Amateur</title>
        <link rel="stylesheet" href="css/reset.css" type="text/css">
        <script src="http://code.jquery.com/jquery-1.8.0.js"></script>
        <script>
            function check_email() {
                var email=$("#txtEmail").val();
                $.ajax(
                {
                    type:"POST",
                    url:"index.php",
                   data: { 
            'email': email
                },
                    success:function(msg) {
                        $("#chkEmail").html(msg);
                    }
                });
                return false;
            }
        </script>
    </head>

    <body>
    <form method="post">
        <label for="txtEmail">E-mail:</label>
            <input id="txtEmail" name="email" type="email" onblur="return check_email()">
        <label id="chkEmail" for="txtEmail"></label>

    </form>
    </body>
    </html>

答案 1 :(得分:-1)

check_email添加

之前的return false函数中的

$("#txtEmail").hide();

这是你的意思吗?