【问题标题】:need to clear input text if validation fails如果验证失败,需要清除输入文本
【发布时间】:2017-04-20 15:21:06
【问题描述】:

我正在寻找验证电子邮件文本框,如果电子邮件已经存在,它应该在 span 中抛出一个错误,并且文本框应该是空的,我用 JQuery 完成了所有工作,但无法清除该字段,请帮助

这是我的邮箱

    <tr>
        <td>
            <label> * Email</label>
        </td>
        <td>
            <input type="text" id="email" name="email"/>
        </td>
        <td> <span id="email_status"></span></td>
    </tr>

以及我对模糊事件的验证

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.0/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$("#email").blur(function() {
var email = $('#email').val();
if(email==="")
{
$("#email_status").html("");
}
else
{
$.ajax({
type: "POST",
cache: false,
url: "checkemail.php",
data: "email="+ email ,
success: function(html){
$("#email_status").html(html);
if (html == "Already exist"){
$("input:text[id=email]").val("");}
}
});
return false;
}
});
});
</script>

最后是 php 部分

<?php
    $conn=mysqli_connect("localhost","root","zaq12345","testdb");
    if(isset($_POST['email']))
    {
     $email=$_POST['email'];
     $qu = "SELECT * FROM formdata WHERE email = '$email'";
     $reslt=mysqli_query($conn,$qu);
     if(mysqli_num_rows($reslt)>0)
    {
        echo "<span style='color:red;'>Already exist</span> ";
    }
    else
    {
        echo "<span style='color:green;'>Available</span>";
    }
    }
?>

【问题讨论】:

标签: javascript php jquery


【解决方案1】:

实际上,您的 js 中的问题在于您检查的 if 语句

if (html == "Already exist")

而从php返回的数据是

<span style='color:red;'>Already exist</span>

我希望你明白了......所以

你的 php 应该喜欢

<?php
    $conn=mysqli_connect("localhost","root","zaq12345","testdb");
    if(isset($_POST['email']))
    {
     $email=$_POST['email'];
     $qu = "SELECT * FROM formdata WHERE email = '$email'";
     $reslt=mysqli_query($conn,$qu);
     if(mysqli_num_rows($reslt)>0)
    {
        echo "Already exist";
    }
    else
    {
        echo "Available";
    }
    }
?>

在js中

success: function(html){
           var html = html.trim();
           if (html == "Already exist"){
             $("#email_status").html("<span style='color:red;'>Already exist</span>");
             $("#email").val("");
           }else if (html == "Available"){
             $("#email_status").html("<span style='color:green;'>Available</span>");
           }
        }

【讨论】:

  • 你刚刚解决了。谢谢它的工作,但如何???我有相同的代码,但在错误的地方???
  • 哦,返回的 html 将是一个跨度标记文本,对吗?所以我们不能将它与 if 函数进行比较?
  • @Joseph 完全是 .. 并且您将 span 行与一个文本进行了比较 .. 但是您可以将其与完整的返回行进行比较 .. 所以如果您需要来自 php 的带有 span 的 html,您必须检查if 语句中的整行
  • @Joseph 每次使用 ajax 时总是尝试提醒或 console.log 从 php 返回数据 .. 它会给你准确的输出,然后让你的 if 语句 .. 祝你好运 :-)
  • 再次扭曲,我还有一个编辑按钮,如果我点击编辑,它将显示所有带有数据的表单元素,在这里我必须进行相同的验证,但它不应该返回“已经存在" 如果我​​没有更改电子邮件(即保留相同的电子邮件但编辑其他字段)那么我现在必须做什么???
【解决方案2】:

您需要从 PHP 文件中发送 true 和 false 并相应地在 HTML 文件中附加标记。

<?php
    $conn=mysqli_connect("localhost","root","zaq12345","testdb");
    if(isset($_POST['email']))
    {
     $email=$_POST['email'];
     $qu = "SELECT * FROM formdata WHERE email = '$email'";
     $reslt=mysqli_query($conn,$qu);
     if(mysqli_num_rows($reslt)>0)
    {
        echo 0;
    }
    else
    {
        echo 1;
    }
    }
?>

这总是一个好习惯。

尝试一下希望它有所帮助。

【讨论】:

    【解决方案3】:
    <tr>
            <td>
                <label> * Email</label>
            </td>
            <td>
                <input type="text" id="email" name="email"/>
            </td>
            <td> <span id="email_status"></span></td>
        </tr>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.0/jquery.min.js"></script>
    <script type="text/javascript">
    $(document).ready(function(){
    $("#email").blur(function() {
    var email = $('#email').val();
    if(email=="")
    {
    $("#email_status").html("");
    }
    else
    {
    $.ajax({
    type: "POST",
    cache: false,
    url: "checkemail.php",
    data: "email="+ email ,
    success: function(html){
    $("#email_status").html(html);
    if (html == "Already exist"){
    $("input:text[id=email]").val("");}
    }
    });
    return false;
    }
    });
    });
    </script>
    <?php
        $conn=mysqli_connect("localhost","root","your databse password","database name");
        if(isset($_POST['email']))
        {
         $email=$_POST['email'];
         $qu = "SELECT * FROM admin WHERE u_name = '$email'";
         $reslt=mysqli_query($conn,$qu);
         if(mysqli_num_rows($reslt)>0)
        {
            echo "<span style='color:red;'>Already exist</span> ";
        }
        else
        {
            echo "<span style='color:green;'>Available</span>";
        }
        }
    ?>
    

    您的代码运行良好,请检查您的数据库名称和数据库连接。你的java脚本代码工作正常 谢谢你

    【讨论】:

      【解决方案4】:

      您可以简单地使用 jQuery 清除输入字段值。

      $("form #email").val('');
      

      【讨论】:

      • 是的,但在哪个地方?我试过了,但每次都被清除了
      • 替换为 "$("input:text[id=email]").val("");"
      • 1) 尝试删除 $("#email").blur(function() { 函数,因为根据代码,在模糊电子邮件文本框后错误将清空。
      【解决方案5】:

      替换这个:

      $("input:text[id=email]").val("");
      

      有了这个:

      $("#email").val("");
      

      【讨论】:

        【解决方案6】:

        试试这个:

        <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.0/jquery.min.js"></script>
        <script type="text/javascript">
        $(document).ready(function(){
        $("#email").blur(function() {
        var email = $('#email').val();
        if(email==="")
        {
        $("#email_status").html("");
        }
        else
        {
        $.ajax({
        type: "POST",
        cache: false,
        url: "checkemail.php",
        data: "email="+ email ,
        success: function(html){
        $("#email_status").html(html);
        if (html == "Already exist"){
        $("#email").val("");}//this was changed by me
        }
        });
        return false;
        }
        });
        });
        </script>
        

        【讨论】:

          【解决方案7】:

          您确定'input:text[id=email]' 是正确的选择器吗?您可以拨打console.log($('input:text[id=email]').length)查询。

          【讨论】:

          • 是的,如果我把它放在 if 语句之外,它就可以工作。但每次都会清除盒子
          猜你喜欢
          • 1970-01-01
          • 2014-11-25
          • 1970-01-01
          • 1970-01-01
          • 2016-07-06
          • 1970-01-01
          • 1970-01-01
          • 2018-06-08
          • 1970-01-01
          相关资源
          最近更新 更多