0Pricing
jQuery Academy · 课时

客户端表单验证逻辑

实现高级客户端验证规则,在提交前为用户提供即时反馈,并使用自定义 jQuery 验证确保数据完整性。

客户端表单验证逻辑 是 CoddyKit 上的免费 jQuery Academy 课时。 这是第 2 节课,共 3 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 jQuery Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 jQuery Academy 课程共包含 3 节课。

为什么要在客户端验证表单

客户端表单验证会在用户输入发送到服务器之前进行检查。这是构建易用 Web 应用的重要步骤。

  • 改善用户体验:用户可以立即看到错误反馈,无需等待服务器响应即可改正错误。
  • 减轻服务器负载:无效数据会被及早发现,避免服务器处理不必要的请求。
  • 加快交互速度:无需重新加载页面,表单操作会更加迅速、响应更加灵敏。

超越基础 HTML5 验证

HTML5 提供了 required、type="email" 和 pattern 等基础验证属性。虽然这些属性很有用,但通常不够灵活,难以应对复杂的业务规则或自定义反馈。

例如,HTML5 很难轻松检查密码是否符合特定的强度要求(例如至少 8 个字符、包含一个数字和一个符号),也难以检查两个密码字段是否匹配。这正是 jQuery 发挥作用的地方!

拦截表单提交

自定义验证的第一步,是阻止浏览器默认的表单提交行为。为此,我们使用 jQuery 的 .submit() 事件处理程序和 event.preventDefault()。

这样,我们就可以先运行验证逻辑。如果表单有效,便可以手动提交表单(或者通过 AJAX 发送,我们会在另一课中介绍)。

<!-- HTML part (imagine this exists) -->
<form id="myForm">
  <input type="text" id="username" required>
  <button type="submit">Submit</button>
</form>

<script>
  $(document).ready(function() {
    $('#myForm').submit(function(event) {
      // Stop the form from submitting normally
      event.preventDefault(); 
      console.log("Form submission intercepted!");
      // Here, you'd add your validation logic
    });
  });
</script>

设计自定义验证函数的结构

将验证逻辑封装在可重复使用的函数中是很好的实践。如果表单有效,该函数可以返回 true,否则返回 false。

然后,您可以在表单的 submit 事件处理程序中调用此函数,以决定是否继续提交。

<!-- HTML part -->
<form id="loginForm">
  <input type="text" id="email" placeholder="Email">
  <button type="submit">Login</button>
</form>

<script>
  function validateLoginForm() {
    let isValid = true;
    const email = $('#email').val();

    if (email === '' || !email.includes('@')) {
      console.log("Invalid email!");
      isValid = false;
    }
    // More validation checks here...
    return isValid;
  }

  $(document).ready(function() {
    $('#loginForm').submit(function(event) {
      event.preventDefault();
      if (validateLoginForm()) {
        console.log("Form is valid! Submitting...");
        // $(this).off('submit').submit(); // To submit programmatically
      } else {
        console.log("Form has errors. Please fix.");
      }
    });
  });
</script>

验证文本字段长度

一种常见的验证规则是检查文本输入的最小或最大长度。我们只需获取输入的 .val(),然后检查其 .length 属性即可轻松完成。

下面将用户名的最小长度设为 5 个字符。

<!-- HTML part -->
<form id="userForm">
  <input type="text" id="username" placeholder="Username">
  <button type="submit">Create User</button>
</form>

<script>
  function validateUsernameLength() {
    const username = $('#username').val();
    if (username.length < 5) {
      console.log("Username must be at least 5 characters long.");
      return false;
    }
    return true;
  }

  $(document).ready(function() {
    $('#userForm').submit(function(event) {
      event.preventDefault();
      if (validateUsernameLength()) {
        console.log("Username is valid!");
      } else {
        console.log("Validation failed.");
      }
    });
  });
</script>

提供即时用户反馈

仅仅将错误记录到控制台还不够!我们需要直接在页面上显示清晰、即时的反馈。您可以在字段旁添加错误消息,或突出显示无效输入。

我们将添加一个 <span> 元素,在用户名过短时显示错误消息。

<!-- HTML part -->
<form id="userFormFeedback">
  <label for="usernameFeedback">Username:</label>
  <input type="text" id="usernameFeedback" placeholder="Min 5 chars">
  <span id="usernameError" style="color: red;"></span>
  <button type="submit">Create User</button>
</form>

<script>
  $(document).ready(function() {
    $('#userFormFeedback').submit(function(event) {
      event.preventDefault();
      const username = $('#usernameFeedback').val();
      const $errorSpan = $('#usernameError');

      if (username.length < 5) {
        $errorSpan.text("Username too short!");
        $('#usernameFeedback').css('border', '1px solid red');
      } else {
        $errorSpan.text("");
        $('#usernameFeedback').css('border', '');
        console.log("Username is valid!");
      }
    });
  });
</script>

使用正则表达式验证电子邮件

对于电子邮件格式等复杂的模式匹配,正则表达式(regex)非常有用。JavaScript 的 RegExp.test() 方法非常适合完成这项工作。

基础的电子邮件正则表达式可以检查字符、“@”符号和域名。请记住,过于严格的电子邮件正则表达式可能会变得非常复杂,因此应在严格性和实用性之间取得平衡。

<!-- HTML part -->
<form id="emailForm">
  <label for="userEmail">Email:</label>
  <input type="text" id="userEmail" placeholder="your@example.com">
  <span id="emailError" style="color: red;"></span>
  <button type="submit">Subscribe</button>
</form>

<script>
  $(document).ready(function() {
    $('#emailForm').submit(function(event) {
      event.preventDefault();
      const email = $('#userEmail').val();
      const $errorSpan = $('#emailError');
      // Basic email regex: something@something.something
      const emailRegex = /^[\w.-]+@[\w.-]+\.[a-zA-Z]{2,6}$/;

      if (!emailRegex.test(email)) {
        $errorSpan.text("Invalid email format.");
        $('#userEmail').css('border', '1px solid red');
      } else {
        $errorSpan.text("");
        $('#userEmail').css('border', '');
        console.log("Email is valid!");
      }
    });
  });
</script>

数值范围验证

有时,您需要确保某个数字处于指定范围内(例如年龄在 18 到 65 岁之间,数量在 1 到 100 之间)。我们可以将输入值转换为数字,然后进行简单的比较。

请务必在进行数值比较前,使用 parseInt() 或 parseFloat() 将字符串输入解析为数字。

<!-- HTML part -->
<form id="ageForm">
  <label for="userAge">Your Age:</label>
  <input type="number" id="userAge" placeholder="Enter age">
  <span id="ageError" style="color: red;"></span>
  <button type="submit">Submit Age</button>
</form>

<script>
  $(document).ready(function() {
    $('#ageForm').submit(function(event) {
      event.preventDefault();
      const ageInput = $('#userAge').val();
      const age = parseInt(ageInput, 10); // Convert to integer
      const $errorSpan = $('#ageError');

      if (isNaN(age) || age < 18 || age > 65) {
        $errorSpan.text("Age must be between 18 and 65.");
        $('#userAge').css('border', '1px solid red');
      } else {
        $errorSpan.text("");
        $('#userAge').css('border', '');
        console.log("Age is valid!");
      }
    });
  });
</script>

组合多个验证规则

表单通常需要为单个字段或多个字段设置多条验证规则。您可以在验证函数中依次执行这些检查。

一种常见做法是假设输入有效,然后在任意规则失败时设置 isValid = false。这样,您就可以在向用户显示错误之前收集所有错误。

  • 调用单独的验证辅助函数。
  • 将结果存储在布尔标志中。
  • 显示所有相关的错误消息。

检查您的验证技能

请考虑一个“产品代码”表单字段,它需要满足以下两条规则:

  1. 长度必须恰好为 6 个字符。
  2. 只能包含大写字母和数字(A-Z、0-9)。

哪段 jQuery 代码片段可以正确验证“productCode”输入字段并显示错误消息?

回顾:客户端验证

在本课中,您学习了如何使用 jQuery 实现健壮的客户端表单验证。我们介绍了:

  • 客户端验证对用户体验和性能的重要性。
  • 使用 event.preventDefault() 拦截表单提交。
  • 如何设计自定义验证函数的结构。
  • 为文本长度、电子邮件模式(regex)和数值范围实现验证规则。
  • 为用户提供清晰、即时的反馈。

掌握这些技巧将帮助您构建更具交互性且不易出错的表单!

常见问题解答

「客户端表单验证逻辑」课时是免费的吗?

是的 — 「客户端表单验证逻辑」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 jQuery Academy 课程的其余内容,请升级到 CoddyKit PRO。 jQuery Academy 课程共包含 3 节课。

「客户端表单验证逻辑」这节课中我会学到什么?

实现高级客户端验证规则,在提交前为用户提供即时反馈,并使用自定义 jQuery 验证确保数据完整性。 你通过在浏览器中直接运行的动手代码来练习 jQuery Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 jQuery Academy 需要有经验吗?

无需任何先前经验。CoddyKit 上的 jQuery Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 2 节课,共 3 节。

「客户端表单验证逻辑」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 jQuery Academy 课中编写并运行代码吗?

能。每节 jQuery Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. 动态操作表单字段
  2. 客户端表单验证逻辑
  3. AJAX 表单提交与反馈
← 返回 jQuery Academy