javascript - HTML。如何检查用户是否在表单中输入了文本?

标签 javascript php jquery html forms

所以我有包含名字姓氏城市电子邮件的表格。我需要检查字段是否不为空。

目前,点击“提交”后,它会重定向到 GetFbId.php从这里我有 5 个值要插入到数据库中:FB_IdFirst_NameLast_NameCity电子邮件

Form.html

<!DOCTYPE html>
<html>
  <head>
    <title>Registracija</title>
    <meta name="robots" content="noindex, nofollow">

    <!-- include css file here-->
   <link rel="stylesheet" href="css/style.css"/>

    <!-- include JavaScript file here-->
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
    <script type="text/javascript" src="js/registration.js"></script>

  </head>   
  <body>
    <div class="container">
        <div class="main">
          <form class="form"  method="post" action="#">
            <h2>Registracijos forma</h2><hr/>
            <label>First Name: </label>
            <input type="text" name="first_name" id="first_name" required>

            <label>Last Name: </label>
            <input type="text" name="last_name" id="last_name" required>

            <label>City: </label>
            <input type="text" name="city" id="city" required>

            <label>Email: </label>
            <input type="text" name="email" id="email" required>

            <input type="submit" name="register" id="register" value="Register">
          </form>   
        </div>
   </div>
  </body>
</html>

正如您现在所看到的,它有 action="GetFbId.php" 。我有 JS 脚本来检查它,但它对我不起作用。 JS 称为:registration.js

我包含在 Form.html 中,里面<head>标签如下:

    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
    <script type="text/javascript" src="js/registration.js"></script>

而不是 action="GetFbId.php">我尝试使用 action="#"> ,但在这种情况下,单击提交按钮后什么也没有发生。

registration.js * 看起来像:

$(document).ready(function(){

$("#register").click(function(){
    var first_name = $("#first_name").val();
    var last_name = $("#last_name").val();
    var city = $("#city").val();
    var email = $("#email").val();

    if( first_name =='' || last_name =='' || email =='' || city =='')
        {
          alert("Fill all fields.");
        }   
    else if((first_name.length)<3)
        {
            alert("Too short first name.");
        }

    else if((last_name.length)<4)
        {
            alert("Too short last name.");
        }   
    else 
       {
         $.post("GetFbId.php",{first_name: first_name, last_name: last_name, city: city, email: email},
          function(data) {
           if(data=='Success')
           {
            $("form")[0].reset();
           }
           alert(data);
        });
       }

    });

});

GetFbId.php我正在尝试获取以下变量:

$first_name = $_POST['first_name']; 
$last_name = $_POST['last_name']; 
$city = $_POST['city']; 
$email = $_POST['email']; 

但是单击提交按钮时没有任何操作(什么也没有发生)。您有解决办法吗?

最佳答案

您需要阻止默认的提交操作。否则,无论您在 JavaScript 中做什么,单击按钮都会提交表单。您的脚本既验证输入又使用 jQuery 的 .post(),因此您需要通过以下方式防止默认提交操作:

event.preventDefault();

我还建议在验证失败时返回 false。

更新了 JavaScript:

$(document).ready(function () {

    $("#register").click(function () { 
        event.preventDefault(); // <--  ADDED THIS LINE
        var first_name = $("#first_name").val();
        var last_name = $("#last_name").val();
        var city = $("#city").val();
        var email = $("#email").val();

        if (first_name == '' || last_name == '' || email == '' || city == '') {
            alert("Fill all fields.");
            return false; // <-- ADDED THIS LINE
        } else if ((first_name.length) < 3) {
            alert("Too short first name.");
            return false; // <-- ADDED THIS LINE
        } else if ((last_name.length) < 4) {
            alert("Too short last name.");
            return false; // <-- ADDED THIS LINE
        } else {
            $.post("GetFbId.php", {
                first_name: first_name,
                last_name: last_name,
                city: city,
                email: email
            },

            function (data) {
                if (data == 'Success') {
                    $("form")[0].reset();
                }
                alert(data);
            });
        }

    });

});

查看演示:http://jsfiddle.net/BenjaminRay/n6jqvrra/

您还可以通过在必填字段中添加“必填”,让浏览器为您处理必填字段验证。然后你只需要处理 $.post() 方面的事情。但是,并非所有旧浏览器(例如 IE8)都支持此功能,因此不能保证阻止表单以空值提交。

例如:

<input type="text" name="first_name" id="first_name" required>

当然,您还需要验证服务器端 (PHP) 的输入。

关于javascript - HTML。如何检查用户是否在表单中输入了文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29233682/

相关文章:

javascript - Joomla 将脚本从 View 添加到头部脚本的底部

javascript - JIRA 问题收集器

javascript - 为什么这个 jQuery 插件(Tooltipster)的 Ajax 内容只有在鼠标悬停 2 次后才显示?

javascript - 如何在 JavaScript 中反转数组,同时保留原始数组的原始值?

javascript - 如何在事件不是参数的函数中添加preventDefault

php - 缩短查询中的文本

php - LEFT JOINING 两个在字符串条件下不互相引用的表是一个坏主意吗?

javascript - 在jquery中做效果后转到链接

javascript - Grails jQuery-ui 自动完成

javascript - Gridview 排序后运行回调