Hướng dẫn how do you insert a validation in html? - làm cách nào để bạn chèn xác thực vào html?

  • Trước
  • Tổng quan: Hình thức
  • Tiếp theo

Trước khi gửi dữ liệu đến máy chủ, điều quan trọng là đảm bảo tất cả các điều khiển biểu mẫu cần thiết được điền vào, ở định dạng chính xác. Điều này được gọi là xác thực biểu mẫu phía máy khách và giúp đảm bảo dữ liệu được gửi khớp với các yêu cầu được quy định trong các điều khiển biểu mẫu khác nhau. Bài viết này dẫn bạn qua các khái niệm cơ bản và ví dụ về xác thực hình thức phía khách hàng.client-side form validation, and helps ensure data submitted matches the requirements set forth in the various form controls. This article leads you through basic concepts and examples of client-side form validation.

Prerequisites: Kiến thức máy tính, một sự hiểu biết hợp lý về HTML, CSS và JavaScript.
Objective: Để hiểu xác thực hình thức phía máy khách là gì, tại sao nó lại quan trọng và làm thế nào để áp dụng các kỹ thuật khác nhau để thực hiện nó.

Xác thực phía máy khách là một kiểm tra ban đầu và là một tính năng quan trọng của trải nghiệm người dùng tốt; Bằng cách bắt dữ liệu không hợp lệ ở phía máy khách, người dùng có thể sửa nó ngay lập tức. Nếu nó đến máy chủ và sau đó bị từ chối, độ trễ đáng chú ý là do một chuyến đi khứ hồi đến máy chủ và sau đó quay lại phía máy khách để bảo người dùng sửa dữ liệu của họ.

Tuy nhiên, xác thực phía khách hàng không nên được coi là một biện pháp bảo mật toàn diện! Ứng dụng của bạn phải luôn thực hiện kiểm tra bảo mật trên bất kỳ dữ liệu được gửi biểu mẫu nào ở phía máy chủ cũng như phía máy khách, vì xác thực phía máy khách quá dễ bỏ qua, vì vậy người dùng độc hại vẫn có thể dễ dàng gửi dữ liệu xấu qua máy chủ của bạn . Đọc bảo mật trang web cho một ý tưởng về những gì có thể xảy ra; Việc thực hiện xác thực phía máy chủ có phần nằm ngoài phạm vi của mô-đun này, nhưng bạn nên ghi nhớ nó.as well as the client-side, because client-side validation is too easy to bypass, so malicious users can still easily send bad data through to your server. Read Website security for an idea of what could happen; implementing server-side validation is somewhat beyond the scope of this module, but you should bear it in mind.

Xác thực hình thức là gì?

Truy cập bất kỳ trang web phổ biến nào với biểu mẫu đăng ký và bạn sẽ nhận thấy rằng họ cung cấp phản hồi khi bạn không nhập dữ liệu của mình theo định dạng mà họ đang mong đợi. Bạn sẽ nhận được tin nhắn như:

  • "Trường này là bắt buộc" (bạn không thể để trống trường này).
  • "Vui lòng nhập số điện thoại của bạn theo định dạng xxx-xxxx" (một định dạng dữ liệu cụ thể là bắt buộc để nó được coi là hợp lệ).
  • "Vui lòng nhập một địa chỉ email hợp lệ" (dữ liệu bạn đã nhập không ở định dạng phù hợp).
  • "Mật khẩu của bạn cần phải dài từ 8 đến 30 ký tự và chứa một chữ hoa, một ký hiệu và một số." (Một định dạng dữ liệu rất cụ thể là bắt buộc cho dữ liệu của bạn).

Điều này được gọi là xác thực mẫu. Khi bạn nhập dữ liệu, trình duyệt và/hoặc máy chủ web sẽ kiểm tra xem dữ liệu ở định dạng chính xác và trong các ràng buộc được đặt bởi ứng dụng. Xác thực được thực hiện trong trình duyệt được gọi là xác thực phía máy khách, trong khi xác thực được thực hiện trên máy chủ được gọi là xác thực phía máy chủ. Trong chương này, chúng tôi đang tập trung vào xác thực phía khách hàng.form validation. When you enter data, the browser and/or the web server will check to see that the data is in the correct format and within the constraints set by the application. Validation done in the browser is called client-side validation, while validation done on the server is called server-side validation. In this chapter we are focusing on client-side validation.

Nếu thông tin được định dạng chính xác, ứng dụng cho phép dữ liệu được gửi đến máy chủ và (thường) được lưu trong cơ sở dữ liệu; Nếu thông tin không được định dạng chính xác, nó cung cấp cho người dùng một thông báo lỗi giải thích những gì cần phải sửa và cho phép họ thử lại.

Chúng tôi muốn làm cho việc điền vào các biểu mẫu web dễ dàng nhất có thể. Vậy tại sao chúng ta khăng khăng xác nhận các hình thức của chúng ta? Có ba lý do chính:

  • Chúng tôi muốn có được dữ liệu phù hợp, theo định dạng phù hợp. Các ứng dụng của chúng tôi sẽ không hoạt động đúng nếu dữ liệu của người dùng của chúng tôi được lưu trữ ở định dạng sai, không chính xác hoặc bị bỏ qua hoàn toàn. Our applications won't work properly if our users' data is stored in the wrong format, is incorrect, or is omitted altogether.
  • Chúng tôi muốn bảo vệ dữ liệu của người dùng. Buộc người dùng của chúng tôi nhập mật khẩu an toàn giúp bảo vệ thông tin tài khoản của họ dễ dàng hơn.. Forcing our users to enter secure passwords makes it easier to protect their account information.
  • Chúng tôi muốn bảo vệ chính mình. Có nhiều cách mà người dùng độc hại có thể sử dụng sai các hình thức không được bảo vệ để làm hỏng ứng dụng. Xem bảo mật trang web.. There are many ways that malicious users can misuse unprotected forms to damage the application. See Website security.

    CẢNH BÁO: Không bao giờ tin tưởng dữ liệu được truyền vào máy chủ của bạn từ máy khách. Ngay cả khi biểu mẫu của bạn đang xác thực chính xác và ngăn chặn đầu vào bị dị tật ở phía máy khách, người dùng độc hại vẫn có thể thay đổi yêu cầu mạng. Never trust data passed to your server from the client. Even if your form is validating correctly and preventing malformed input on the client-side, a malicious user can still alter the network request.

Các loại xác thực phía máy khách khác nhau

Có hai loại xác thực phía máy khách khác nhau mà bạn sẽ gặp trên web:

  • Xác thực biểu mẫu tích hợp sử dụng các tính năng xác thực biểu mẫu HTML, mà chúng tôi đã thảo luận ở nhiều nơi trong suốt mô-đun này. Xác nhận này thường không yêu cầu nhiều JavaScript. Xác thực biểu mẫu tích hợp có hiệu suất tốt hơn JavaScript, nhưng nó không thể tùy chỉnh như xác thực JavaScript. uses HTML form validation features, which we've discussed in many places throughout this module. This validation generally doesn't require much JavaScript. Built-in form validation has better performance than JavaScript, but it is not as customizable as JavaScript validation.
  • Xác thực JavaScript được mã hóa bằng JavaScript. Xác thực này hoàn toàn có thể tùy chỉnh, nhưng bạn cần tạo tất cả (hoặc sử dụng thư viện). validation is coded using JavaScript. This validation is completely customizable, but you need to create it all (or use a library).

Sử dụng xác thực biểu mẫu tích hợp

Một trong những tính năng quan trọng nhất của các điều khiển hình thức hiện đại là khả năng xác nhận hầu hết dữ liệu người dùng mà không cần dựa vào JavaScript. Điều này được thực hiện bằng cách sử dụng các thuộc tính xác thực trên các yếu tố biểu mẫu. Chúng tôi đã thấy nhiều trong số này sớm hơn trong khóa học, nhưng để tóm tắt lại:

  • input:invalid {
      border: 2px dashed red;
    }
    
    input:valid {
      border: 2px solid black;
    }
    
    8: Chỉ định xem một trường biểu mẫu có cần được điền trước khi có thể gửi biểu mẫu hay không.
  • input:invalid {
      border: 2px dashed red;
    }
    
    input:valid {
      border: 2px solid black;
    }
    
    9 và
    <form>
      <label for="choose">Would you prefer a banana or cherry? (required)label>
      <input id="choose" name="i-like" required />
      <button>Submitbutton>
    form>
    
    0: Chỉ định độ dài tối thiểu và tối đa của dữ liệu văn bản (chuỗi).
  • <form>
      <label for="choose">Would you prefer a banana or cherry? (required)label>
      <input id="choose" name="i-like" required />
      <button>Submitbutton>
    form>
    
    1 và
    <form>
      <label for="choose">Would you prefer a banana or cherry? (required)label>
      <input id="choose" name="i-like" required />
      <button>Submitbutton>
    form>
    
    2: Chỉ định các giá trị tối thiểu và tối đa của các loại đầu vào số.
  • <form>
      <label for="choose">Would you prefer a banana or cherry? (required)label>
      <input id="choose" name="i-like" required />
      <button>Submitbutton>
    form>
    
    3: Chỉ định liệu dữ liệu cần phải là số, địa chỉ email hoặc một số loại cài đặt trước cụ thể khác.
  • <form>
      <label for="choose">Would you prefer a banana or cherry? (required)label>
      <input id="choose" name="i-like" required />
      <button>Submitbutton>
    form>
    
    4: Chỉ định một biểu thức chính quy xác định một mẫu mà dữ liệu đã nhập cần phải tuân theo.

Nếu dữ liệu được nhập trong một trường biểu mẫu tuân theo tất cả các quy tắc được chỉ định bởi các thuộc tính trên, thì nó được coi là hợp lệ. Nếu không, nó được coi là không hợp lệ.

Khi một yếu tố hợp lệ, những điều sau đây là đúng:

  • Phần tử phù hợp với lớp giả CSS, cho phép bạn áp dụng một kiểu cụ thể cho các yếu tố hợp lệ.
  • Nếu người dùng cố gắng gửi dữ liệu, trình duyệt sẽ gửi biểu mẫu, miễn là không có gì khác ngăn không cho nó làm như vậy (ví dụ: JavaScript).

Khi một phần tử không hợp lệ, những điều sau đây là đúng:

  • Phần tử phù hợp với lớp giả CSS và đôi khi các lớp giả UI khác (ví dụ:
    <form>
      <label for="choose">Would you prefer a banana or cherry? (required)label>
      <input id="choose" name="i-like" required />
      <button>Submitbutton>
    form>
    
    7) tùy thuộc vào lỗi, cho phép bạn áp dụng một kiểu cụ thể cho các phần tử không hợp lệ.
  • Nếu người dùng cố gắng gửi dữ liệu, trình duyệt sẽ chặn biểu mẫu và hiển thị thông báo lỗi.

Ví dụ xác nhận biểu mẫu tích hợp

Trong phần này, chúng tôi sẽ kiểm tra một số thuộc tính mà chúng tôi đã thảo luận ở trên.

Tệp bắt đầu đơn giản

Hãy bắt đầu với một ví dụ đơn giản: một đầu vào cho phép bạn chọn xem bạn thích chuối hay anh đào. Ví dụ này liên quan đến một văn bản đơn giản

<form>
  <label for="choose">Would you prefer a banana or cherry? (required)label>
  <input id="choose" name="i-like" required />
  <button>Submitbutton>
form>
8 với
<form>
  <label for="choose">Would you prefer a banana or cherry? (required)label>
  <input id="choose" name="i-like" required />
  <button>Submitbutton>
form>
9 được liên kết và gửi
input:invalid {
  border: 2px dashed red;
}

input:invalid:required {
  background-image: linear-gradient(to right, pink, lightgreen);
}

input:valid {
  border: 2px solid black;
}
0. Tìm mã nguồn trên GitHub tại Fruit-start.html và một ví dụ trực tiếp dưới đây.

<form>
  <label for="choose">Would you prefer a banana or cherry?label>
  <input id="choose" name="i-like" />
  <button>Submitbutton>
form>

input:invalid {
  border: 2px dashed red;
}

input:valid {
  border: 2px solid black;
}

Để bắt đầu, hãy tạo một bản sao của

input:invalid {
  border: 2px dashed red;
}

input:invalid:required {
  background-image: linear-gradient(to right, pink, lightgreen);
}

input:valid {
  border: 2px solid black;
}
1 trong một thư mục mới trên ổ cứng của bạn.

Thuộc tính cần thiết

Tính năng xác thực HTML đơn giản nhất là thuộc tính

input:invalid {
  border: 2px dashed red;
}

input:valid {
  border: 2px solid black;
}
8. Để thực hiện bắt buộc đầu vào, hãy thêm thuộc tính này vào phần tử. Khi thuộc tính này được đặt, phần tử khớp với lớp giả UI ____33 và biểu mẫu sẽ không gửi, hiển thị thông báo lỗi khi gửi khi đầu vào trống. Mặc dù trống, đầu vào cũng sẽ được coi là không hợp lệ, phù hợp với lớp giả UI ____26.

Thêm thuộc tính

input:invalid {
  border: 2px dashed red;
}

input:valid {
  border: 2px solid black;
}
8 vào đầu vào của bạn, như được hiển thị bên dưới.

<form>
  <label for="choose">Would you prefer a banana or cherry? (required)label>
  <input id="choose" name="i-like" required />
  <button>Submitbutton>
form>

Lưu ý các CSS được bao gồm trong tệp ví dụ:

input:invalid {
  border: 2px dashed red;
}

input:invalid:required {
  background-image: linear-gradient(to right, pink, lightgreen);
}

input:valid {
  border: 2px solid black;
}

CSS này làm cho đầu vào có đường viền đứt nét màu đỏ khi nó không hợp lệ và một đường viền màu đen rắn tinh tế hơn khi hợp lệ. Chúng tôi cũng đã thêm một gradient nền khi đầu vào được yêu cầu và không hợp lệ. Hãy thử hành vi mới trong ví dụ dưới đây:

Hãy thử gửi biểu mẫu mà không có giá trị. Lưu ý cách đầu vào không hợp lệ được lấy nét, thông báo lỗi mặc định ("Vui lòng điền vào trường này") xuất hiện và biểu mẫu được ngăn chặn được gửi.

Sự hiện diện của thuộc tính

input:invalid {
  border: 2px dashed red;
}

input:valid {
  border: 2px solid black;
}
8 trên bất kỳ phần tử nào hỗ trợ thuộc tính này có nghĩa là phần tử phù hợp với lớp giả
input:invalid {
  border: 2px dashed red;
}

input:invalid:required {
  background-image: linear-gradient(to right, pink, lightgreen);
}

input:valid {
  border: 2px solid black;
}
3 cho dù nó có giá trị hay không. Nếu
<form>
  <label for="choose">Would you prefer a banana or cherry? (required)label>
  <input id="choose" name="i-like" required />
  <button>Submitbutton>
form>
8 không có giá trị,
input:invalid {
  border: 2px dashed red;
}

input:invalid:required {
  background-image: linear-gradient(to right, pink, lightgreen);
}

input:valid {
  border: 2px solid black;
}
9 sẽ khớp với lớp giả
<form>
  <label for="choose">Would you prefer a banana or cherry? (required)label>
  <input id="choose" name="i-like" required />
  <button>Submitbutton>
form>
6.

Lưu ý: Đối với trải nghiệm người dùng tốt, hãy cho biết người dùng khi cần trường biểu mẫu. Nó không chỉ trải nghiệm người dùng tốt, nó được yêu cầu bởi các hướng dẫn tiếp cận WCAG. Ngoài ra, chỉ yêu cầu người dùng nhập dữ liệu bạn thực sự cần: ví dụ, tại sao bạn thực sự cần biết giới tính hoặc tiêu đề của ai đó? For good user experience, indicate to the user when form fields are required. It isn't only good user experience, it is required by WCAG accessibility guidelines. Also, only require users to input data you actually need: For example, why do you really need to know someone's gender or title?

Xác nhận dựa trên biểu thức chính quy

Một tính năng xác nhận hữu ích khác là thuộc tính

<form>
  <label for="choose">Would you prefer a banana or cherry? (required)label>
  <input id="choose" name="i-like" required />
  <button>Submitbutton>
form>
4, mong đợi một biểu thức thông thường là giá trị của nó. Một biểu thức chính quy (regex) là một mẫu có thể được sử dụng để phù hợp với các kết hợp ký tự trong các chuỗi văn bản, vì vậy RegEXP là lý tưởng để xác thực biểu mẫu và phục vụ nhiều cách sử dụng khác trong JavaScript.

RegEXPS khá phức tạp và chúng tôi không có ý định dạy bạn một cách triệt để trong bài viết này. Dưới đây là một số ví dụ để cung cấp cho bạn một ý tưởng cơ bản về cách chúng hoạt động.

  • <form>
      <label for="choose">Would you prefer a banana or a cherry?label>
      <input id="choose" name="i-like" required pattern="[Bb]anana|[Cc]herry" />
      <button>Submitbutton>
    form>
    
    2 - khớp với một ký tự là
    <form>
      <label for="choose">Would you prefer a banana or a cherry?label>
      <input id="choose" name="i-like" required pattern="[Bb]anana|[Cc]herry" />
      <button>Submitbutton>
    form>
    
    2 (không phải
    <form>
      <label for="choose">Would you prefer a banana or a cherry?label>
      <input id="choose" name="i-like" required pattern="[Bb]anana|[Cc]herry" />
      <button>Submitbutton>
    form>
    
    4, không phải
    <form>
      <label for="choose">Would you prefer a banana or a cherry?label>
      <input id="choose" name="i-like" required pattern="[Bb]anana|[Cc]herry" />
      <button>Submitbutton>
    form>
    
    5, v.v.).
  • <form>
      <label for="choose">Would you prefer a banana or a cherry?label>
      <input id="choose" name="i-like" required pattern="[Bb]anana|[Cc]herry" />
      <button>Submitbutton>
    form>
    
    6 - khớp
    <form>
      <label for="choose">Would you prefer a banana or a cherry?label>
      <input id="choose" name="i-like" required pattern="[Bb]anana|[Cc]herry" />
      <button>Submitbutton>
    form>
    
    2, tiếp theo là
    <form>
      <label for="choose">Would you prefer a banana or a cherry?label>
      <input id="choose" name="i-like" required pattern="[Bb]anana|[Cc]herry" />
      <button>Submitbutton>
    form>
    
    4, tiếp theo là
    <form>
      <label for="choose">Would you prefer a banana or a cherry?label>
      <input id="choose" name="i-like" required pattern="[Bb]anana|[Cc]herry" />
      <button>Submitbutton>
    form>
    
    9.
  • input:invalid {
      border: 2px dashed red;
    }
    
    input:valid {
      border: 2px solid black;
    }
    
    0 - khớp với
    <form>
      <label for="choose">Would you prefer a banana or a cherry?label>
      <input id="choose" name="i-like" required pattern="[Bb]anana|[Cc]herry" />
      <button>Submitbutton>
    form>
    
    2, tùy chọn theo sau là một
    <form>
      <label for="choose">Would you prefer a banana or a cherry?label>
      <input id="choose" name="i-like" required pattern="[Bb]anana|[Cc]herry" />
      <button>Submitbutton>
    form>
    
    4, tiếp theo là
    <form>
      <label for="choose">Would you prefer a banana or a cherry?label>
      <input id="choose" name="i-like" required pattern="[Bb]anana|[Cc]herry" />
      <button>Submitbutton>
    form>
    
    9. (
    input:invalid {
      border: 2px dashed red;
    }
    
    input:valid {
      border: 2px solid black;
    }
    
    4 hoặc
    <form>
      <label for="choose">Would you prefer a banana or a cherry?label>
      <input id="choose" name="i-like" required pattern="[Bb]anana|[Cc]herry" />
      <button>Submitbutton>
    form>
    
    6)
  • input:invalid {
      border: 2px dashed red;
    }
    
    input:valid {
      border: 2px solid black;
    }
    
    6 - khớp với
    <form>
      <label for="choose">Would you prefer a banana or a cherry?label>
      <input id="choose" name="i-like" required pattern="[Bb]anana|[Cc]herry" />
      <button>Submitbutton>
    form>
    
    2, tùy chọn theo sau là bất kỳ số lượng
    <form>
      <label for="choose">Would you prefer a banana or a cherry?label>
      <input id="choose" name="i-like" required pattern="[Bb]anana|[Cc]herry" />
      <button>Submitbutton>
    form>
    
    4 nào, tiếp theo là
    <form>
      <label for="choose">Would you prefer a banana or a cherry?label>
      <input id="choose" name="i-like" required pattern="[Bb]anana|[Cc]herry" />
      <button>Submitbutton>
    form>
    
    9. (
    input:invalid {
      border: 2px dashed red;
    }
    
    input:valid {
      border: 2px solid black;
    }
    
    4,
    <form>
      <label for="choose">Would you prefer a banana or a cherry?label>
      <input id="choose" name="i-like" required pattern="[Bb]anana|[Cc]herry" />
      <button>Submitbutton>
    form>
    
    6,
    <form>
      <div>
        <label for="choose">Would you prefer a banana or a cherry?label>
        <input
          type="text"
          id="choose"
          name="i-like"
          required
          minlength="6"
          maxlength="6" />
      div>
      <div>
        <label for="number">How many would you like?label>
        <input type="number" id="number" name="amount" value="1" min="1" max="10" />
      div>
      <div>
        <button>Submitbutton>
      div>
    form>
    
    2, v.v.).
  • <form>
      <div>
        <label for="choose">Would you prefer a banana or a cherry?label>
        <input
          type="text"
          id="choose"
          name="i-like"
          required
          minlength="6"
          maxlength="6" />
      div>
      <div>
        <label for="number">How many would you like?label>
        <input type="number" id="number" name="amount" value="1" min="1" max="10" />
      div>
      <div>
        <button>Submitbutton>
      div>
    form>
    
    3 - khớp với một ký tự là
    <form>
      <label for="choose">Would you prefer a banana or a cherry?label>
      <input id="choose" name="i-like" required pattern="[Bb]anana|[Cc]herry" />
      <button>Submitbutton>
    form>
    
    2 hoặc
    <form>
      <label for="choose">Would you prefer a banana or a cherry?label>
      <input id="choose" name="i-like" required pattern="[Bb]anana|[Cc]herry" />
      <button>Submitbutton>
    form>
    
    4.
  • <form>
      <div>
        <label for="choose">Would you prefer a banana or a cherry?label>
        <input
          type="text"
          id="choose"
          name="i-like"
          required
          minlength="6"
          maxlength="6" />
      div>
      <div>
        <label for="number">How many would you like?label>
        <input type="number" id="number" name="amount" value="1" min="1" max="10" />
      div>
      <div>
        <button>Submitbutton>
      div>
    form>
    
    6 - khớp chính xác
    <form>
      <label for="choose">Would you prefer a banana or a cherry?label>
      <input id="choose" name="i-like" required pattern="[Bb]anana|[Cc]herry" />
      <button>Submitbutton>
    form>
    
    6 hoặc chính xác
    <form>
      <div>
        <label for="choose">Would you prefer a banana or a cherry?label>
        <input
          type="text"
          id="choose"
          name="i-like"
          required
          minlength="6"
          maxlength="6" />
      div>
      <div>
        <label for="number">How many would you like?label>
        <input type="number" id="number" name="amount" value="1" min="1" max="10" />
      div>
      <div>
        <button>Submitbutton>
      div>
    form>
    
    8 (nhưng không phải
    <form>
      <div>
        <label for="choose">Would you prefer a banana or a cherry?label>
        <input
          type="text"
          id="choose"
          name="i-like"
          required
          minlength="6"
          maxlength="6" />
      div>
      <div>
        <label for="number">How many would you like?label>
        <input type="number" id="number" name="amount" value="1" min="1" max="10" />
      div>
      <div>
        <button>Submitbutton>
      div>
    form>
    
    9 hoặc
    <form>
      <label for="choose">Would you prefer a banana or a cherry?label>
      <input id="choose" name="i-like" required pattern="[Bb]anana|[Cc]herry" />
      <button>Submitbutton>
    form>
    
    2 hoặc
    input:invalid {
      border: 2px dashed red;
    }
    
    input:valid {
      border: 2px solid black;
    }
    
    div {
      margin-bottom: 10px;
    }
    
    1, v.v.).

Có nhiều khả năng khác mà chúng tôi không bao gồm ở đây. Đối với một danh sách đầy đủ và nhiều ví dụ, hãy tham khảo tài liệu biểu thức thường xuyên của chúng tôi.

Hãy thực hiện một ví dụ. Cập nhật HTML của bạn để thêm thuộc tính

<form>
  <label for="choose">Would you prefer a banana or cherry? (required)label>
  <input id="choose" name="i-like" required />
  <button>Submitbutton>
form>
4 như thế này:

<form>
  <label for="choose">Would you prefer a banana or a cherry?label>
  <input id="choose" name="i-like" required pattern="[Bb]anana|[Cc]herry" />
  <button>Submitbutton>
form>

input:invalid {
  border: 2px dashed red;
}

input:valid {
  border: 2px solid black;
}

Điều này cung cấp cho chúng tôi bản cập nhật sau - hãy thử nó:

Trong ví dụ này, phần tử

<form>
  <label for="choose">Would you prefer a banana or cherry? (required)label>
  <input id="choose" name="i-like" required />
  <button>Submitbutton>
form>
8 chấp nhận một trong bốn giá trị có thể: chuỗi "chuối", "chuối", "anh đào" hoặc "anh đào". Các biểu thức thông thường là nhạy cảm với trường hợp, nhưng chúng tôi đã hỗ trợ nó được viết hoa cũng như các phiên bản trường hợp thấp hơn bằng cách sử dụng một mẫu "AA" bổ sung được lồng bên trong các giá đỡ vuông.

Tại thời điểm này, hãy thử thay đổi giá trị bên trong thuộc tính

<form>
  <label for="choose">Would you prefer a banana or cherry? (required)label>
  <input id="choose" name="i-like" required />
  <button>Submitbutton>
form>
4 thành một số ví dụ bạn đã thấy trước đó và xem xét cách đó ảnh hưởng đến các giá trị bạn có thể nhập để làm cho giá trị đầu vào hợp lệ. Hãy thử viết một số của riêng bạn, và xem nó diễn ra như thế nào. Làm cho chúng liên quan đến trái cây nếu có thể để các ví dụ của bạn có ý nghĩa!

Nếu giá trị không trống của

<form>
  <label for="choose">Would you prefer a banana or cherry? (required)label>
  <input id="choose" name="i-like" required />
  <button>Submitbutton>
form>
8 không khớp với mẫu biểu thức chính quy,
input:invalid {
  border: 2px dashed red;
}

input:invalid:required {
  background-image: linear-gradient(to right, pink, lightgreen);
}

input:valid {
  border: 2px solid black;
}
9 sẽ khớp với lớp giả
<form>
  <label for="choose">Would you prefer a banana or cherry? (required)label>
  <input id="choose" name="i-like" required />
  <button>Submitbutton>
form>
6.

Lưu ý: Một số loại phần tử

<form>
  <label for="choose">Would you prefer a banana or cherry? (required)label>
  <input id="choose" name="i-like" required />
  <button>Submitbutton>
form>
8 không cần thuộc tính
<form>
  <label for="choose">Would you prefer a banana or cherry? (required)label>
  <input id="choose" name="i-like" required />
  <button>Submitbutton>
form>
4 để được xác thực dựa trên biểu thức thông thường. Ví dụ, chỉ định loại
<form>
  <p>
    <fieldset>
      <legend>Do you have a driver's license?<span aria-label="required">*span>legend>
      
      <input type="radio" required name="driver" id="r1" value="yes"><label for="r1">Yeslabel>
      <input type="radio" required name="driver" id="r2" value="no"><label for="r2">Nolabel>
    fieldset>
  p>
  <p>
    <label for="n1">How old are you?label>
    
    <input type="number" min="12" max="120" step="1" id="n1" name="age"
           pattern="\d+">
  p>
  <p>
    <label for="t1">What's your favorite fruit?<span aria-label="required">*span>label>
    <input type="text" id="t1" name="fruit" list="l1" required
           pattern="[Bb]anana|[Cc]herry|[Aa]pple|[Ss]trawberry|[Ll]emon|[Oo]range">
    <datalist id="l1">
      <option>Bananaoption>
      <option>Cherryoption>
      <option>Appleoption>
      <option>Strawberryoption>
      <option>Lemonoption>
      <option>Orangeoption>
    datalist>
  p>
  <p>
    <label for="t2">What's your e-mail address?label>
    <input type="email" id="t2" name="email">
  p>
  <p>
    <label for="t3">Leave a short messagelabel>
    <textarea id="t3" name="msg" maxlength="140" rows="5">textarea>
  p>
  <p>
    <button>Submitbutton>
  p>
form>
0 xác thực giá trị đầu vào đối với mẫu địa chỉ email được hình thành tốt hoặc mẫu phù hợp với danh sách địa chỉ email được phân tách bằng dấu phẩy nếu nó có thuộc tính
<form>
  <p>
    <fieldset>
      <legend>Do you have a driver's license?<span aria-label="required">*span>legend>
      
      <input type="radio" required name="driver" id="r1" value="yes"><label for="r1">Yeslabel>
      <input type="radio" required name="driver" id="r2" value="no"><label for="r2">Nolabel>
    fieldset>
  p>
  <p>
    <label for="n1">How old are you?label>
    
    <input type="number" min="12" max="120" step="1" id="n1" name="age"
           pattern="\d+">
  p>
  <p>
    <label for="t1">What's your favorite fruit?<span aria-label="required">*span>label>
    <input type="text" id="t1" name="fruit" list="l1" required
           pattern="[Bb]anana|[Cc]herry|[Aa]pple|[Ss]trawberry|[Ll]emon|[Oo]range">
    <datalist id="l1">
      <option>Bananaoption>
      <option>Cherryoption>
      <option>Appleoption>
      <option>Strawberryoption>
      <option>Lemonoption>
      <option>Orangeoption>
    datalist>
  p>
  <p>
    <label for="t2">What's your e-mail address?label>
    <input type="email" id="t2" name="email">
  p>
  <p>
    <label for="t3">Leave a short messagelabel>
    <textarea id="t3" name="msg" maxlength="140" rows="5">textarea>
  p>
  <p>
    <button>Submitbutton>
  p>
form>
1.
Some
<form>
  <label for="choose">Would you prefer a banana or cherry? (required)label>
  <input id="choose" name="i-like" required />
  <button>Submitbutton>
form>
8 element types don't need a
<form>
  <label for="choose">Would you prefer a banana or cherry? (required)label>
  <input id="choose" name="i-like" required />
  <button>Submitbutton>
form>
4 attribute to be validated against a regular expression. Specifying the
<form>
  <p>
    <fieldset>
      <legend>Do you have a driver's license?<span aria-label="required">*span>legend>
      
      <input type="radio" required name="driver" id="r1" value="yes"><label for="r1">Yeslabel>
      <input type="radio" required name="driver" id="r2" value="no"><label for="r2">Nolabel>
    fieldset>
  p>
  <p>
    <label for="n1">How old are you?label>
    
    <input type="number" min="12" max="120" step="1" id="n1" name="age"
           pattern="\d+">
  p>
  <p>
    <label for="t1">What's your favorite fruit?<span aria-label="required">*span>label>
    <input type="text" id="t1" name="fruit" list="l1" required
           pattern="[Bb]anana|[Cc]herry|[Aa]pple|[Ss]trawberry|[Ll]emon|[Oo]range">
    <datalist id="l1">
      <option>Bananaoption>
      <option>Cherryoption>
      <option>Appleoption>
      <option>Strawberryoption>
      <option>Lemonoption>
      <option>Orangeoption>
    datalist>
  p>
  <p>
    <label for="t2">What's your e-mail address?label>
    <input type="email" id="t2" name="email">
  p>
  <p>
    <label for="t3">Leave a short messagelabel>
    <textarea id="t3" name="msg" maxlength="140" rows="5">textarea>
  p>
  <p>
    <button>Submitbutton>
  p>
form>
0 type, for example, validates the inputs value against a well-formed email address pattern or a pattern matching a comma-separated list of email addresses if it has the
<form>
  <p>
    <fieldset>
      <legend>Do you have a driver's license?<span aria-label="required">*span>legend>
      
      <input type="radio" required name="driver" id="r1" value="yes"><label for="r1">Yeslabel>
      <input type="radio" required name="driver" id="r2" value="no"><label for="r2">Nolabel>
    fieldset>
  p>
  <p>
    <label for="n1">How old are you?label>
    
    <input type="number" min="12" max="120" step="1" id="n1" name="age"
           pattern="\d+">
  p>
  <p>
    <label for="t1">What's your favorite fruit?<span aria-label="required">*span>label>
    <input type="text" id="t1" name="fruit" list="l1" required
           pattern="[Bb]anana|[Cc]herry|[Aa]pple|[Ss]trawberry|[Ll]emon|[Oo]range">
    <datalist id="l1">
      <option>Bananaoption>
      <option>Cherryoption>
      <option>Appleoption>
      <option>Strawberryoption>
      <option>Lemonoption>
      <option>Orangeoption>
    datalist>
  p>
  <p>
    <label for="t2">What's your e-mail address?label>
    <input type="email" id="t2" name="email">
  p>
  <p>
    <label for="t3">Leave a short messagelabel>
    <textarea id="t3" name="msg" maxlength="140" rows="5">textarea>
  p>
  <p>
    <button>Submitbutton>
  p>
form>
1 attribute.

Hạn chế độ dài của các mục nhập của bạn

Bạn có thể hạn chế độ dài ký tự của tất cả các trường văn bản được tạo bởi

<form>
  <label for="choose">Would you prefer a banana or cherry? (required)label>
  <input id="choose" name="i-like" required />
  <button>Submitbutton>
form>
8 hoặc
<form>
  <p>
    <fieldset>
      <legend>Do you have a driver's license?<span aria-label="required">*span>legend>
      
      <input type="radio" required name="driver" id="r1" value="yes"><label for="r1">Yeslabel>
      <input type="radio" required name="driver" id="r2" value="no"><label for="r2">Nolabel>
    fieldset>
  p>
  <p>
    <label for="n1">How old are you?label>
    
    <input type="number" min="12" max="120" step="1" id="n1" name="age"
           pattern="\d+">
  p>
  <p>
    <label for="t1">What's your favorite fruit?<span aria-label="required">*span>label>
    <input type="text" id="t1" name="fruit" list="l1" required
           pattern="[Bb]anana|[Cc]herry|[Aa]pple|[Ss]trawberry|[Ll]emon|[Oo]range">
    <datalist id="l1">
      <option>Bananaoption>
      <option>Cherryoption>
      <option>Appleoption>
      <option>Strawberryoption>
      <option>Lemonoption>
      <option>Orangeoption>
    datalist>
  p>
  <p>
    <label for="t2">What's your e-mail address?label>
    <input type="email" id="t2" name="email">
  p>
  <p>
    <label for="t3">Leave a short messagelabel>
    <textarea id="t3" name="msg" maxlength="140" rows="5">textarea>
  p>
  <p>
    <button>Submitbutton>
  p>
form>
3 bằng cách sử dụng các thuộc tính
input:invalid {
  border: 2px dashed red;
}

input:valid {
  border: 2px solid black;
}
9 và
<form>
  <label for="choose">Would you prefer a banana or cherry? (required)label>
  <input id="choose" name="i-like" required />
  <button>Submitbutton>
form>
0. Một trường không hợp lệ nếu nó có giá trị và giá trị đó có ít ký tự hơn giá trị
input:invalid {
  border: 2px dashed red;
}

input:valid {
  border: 2px solid black;
}
9 hoặc nhiều hơn giá trị
<form>
  <label for="choose">Would you prefer a banana or cherry? (required)label>
  <input id="choose" name="i-like" required />
  <button>Submitbutton>
form>
0.

Các trình duyệt thường không để người dùng nhập giá trị dài hơn dự kiến ​​vào các trường văn bản. Trải nghiệm người dùng tốt hơn là chỉ sử dụng

<form>
  <label for="choose">Would you prefer a banana or cherry? (required)label>
  <input id="choose" name="i-like" required />
  <button>Submitbutton>
form>
0 là cung cấp phản hồi đếm ký tự một cách có thể truy cập và để họ chỉnh sửa nội dung của họ theo kích thước. Một ví dụ về điều này là giới hạn nhân vật được thấy trên Twitter khi tweet. JavaScript, bao gồm các giải pháp sử dụng
<form>
  <label for="choose">Would you prefer a banana or cherry? (required)label>
  <input id="choose" name="i-like" required />
  <button>Submitbutton>
form>
0, có thể được sử dụng để cung cấp điều này.

Hạn chế các giá trị của các mục nhập của bạn

Đối với các trường số (nghĩa là

form {
  font: 1em sans-serif;
  max-width: 320px;
}

p > label {
  display: block;
}

input[type="text"],
input[type="email"],
input[type="number"],
textarea,
fieldset {
  width: 100%;
  border: 1px solid #333;
  box-sizing: border-box;
}

input:invalid {
  box-shadow: 0 0 5px 1px red;
}

input:focus:invalid {
  box-shadow: none;
}
0), các thuộc tính
<form>
  <label for="choose">Would you prefer a banana or cherry? (required)label>
  <input id="choose" name="i-like" required />
  <button>Submitbutton>
form>
1 và
<form>
  <label for="choose">Would you prefer a banana or cherry? (required)label>
  <input id="choose" name="i-like" required />
  <button>Submitbutton>
form>
2 có thể được sử dụng để cung cấp một loạt các giá trị hợp lệ. Nếu trường chứa một giá trị bên ngoài phạm vi này, nó sẽ không hợp lệ.

Hãy xem xét một ví dụ khác. Tạo một bản sao mới của tệp fruit-start.html.

Bây giờ xóa nội dung của phần tử

form {
  font: 1em sans-serif;
  max-width: 320px;
}

p > label {
  display: block;
}

input[type="text"],
input[type="email"],
input[type="number"],
textarea,
fieldset {
  width: 100%;
  border: 1px solid #333;
  box-sizing: border-box;
}

input:invalid {
  box-shadow: 0 0 5px 1px red;
}

input:focus:invalid {
  box-shadow: none;
}
3 và thay thế nó bằng cách sau:

<form>
  <div>
    <label for="choose">Would you prefer a banana or a cherry?label>
    <input
      type="text"
      id="choose"
      name="i-like"
      required
      minlength="6"
      maxlength="6" />
  div>
  <div>
    <label for="number">How many would you like?label>
    <input type="number" id="number" name="amount" value="1" min="1" max="10" />
  div>
  <div>
    <button>Submitbutton>
  div>
form>

  • Ở đây bạn sẽ thấy rằng chúng tôi đã cho trường
    form {
      font: 1em sans-serif;
      max-width: 320px;
    }
    
    p > label {
      display: block;
    }
    
    input[type="text"],
    input[type="email"],
    input[type="number"],
    textarea,
    fieldset {
      width: 100%;
      border: 1px solid #333;
      box-sizing: border-box;
    }
    
    input:invalid {
      box-shadow: 0 0 5px 1px red;
    }
    
    input:focus:invalid {
      box-shadow: none;
    }
    
    4 một
    input:invalid {
      border: 2px dashed red;
    }
    
    input:valid {
      border: 2px solid black;
    }
    
    9 và
    <form>
      <label for="choose">Would you prefer a banana or cherry? (required)label>
      <input id="choose" name="i-like" required />
      <button>Submitbutton>
    form>
    
    0 của sáu, có cùng chiều dài với chuối và anh đào.
  • Chúng tôi cũng đã cho trường
    form {
      font: 1em sans-serif;
      max-width: 320px;
    }
    
    p > label {
      display: block;
    }
    
    input[type="text"],
    input[type="email"],
    input[type="number"],
    textarea,
    fieldset {
      width: 100%;
      border: 1px solid #333;
      box-sizing: border-box;
    }
    
    input:invalid {
      box-shadow: 0 0 5px 1px red;
    }
    
    input:focus:invalid {
      box-shadow: none;
    }
    
    7
    <form>
      <label for="choose">Would you prefer a banana or cherry? (required)label>
      <input id="choose" name="i-like" required />
      <button>Submitbutton>
    form>
    
    1 của một và
    <form>
      <label for="choose">Would you prefer a banana or cherry? (required)label>
      <input id="choose" name="i-like" required />
      <button>Submitbutton>
    form>
    
    2 của mười. Đã nhập các số bên ngoài phạm vi này sẽ hiển thị là không hợp lệ; Người dùng sẽ không thể sử dụng mũi tên tăng/giảm để di chuyển giá trị bên ngoài phạm vi này. Nếu người dùng theo cách thủ công một số bên ngoài phạm vi này, dữ liệu không hợp lệ. Số không cần thiết, vì vậy việc loại bỏ giá trị vẫn sẽ dẫn đến giá trị hợp lệ.

input:invalid {
  border: 2px dashed red;
}

input:valid {
  border: 2px solid black;
}

div {
  margin-bottom: 10px;
}

Đây là ví dụ chạy trực tiếp:

Lưu ý:

form {
  font: 1em sans-serif;
  max-width: 320px;
}

p > label {
  display: block;
}

input[type="text"],
input[type="email"],
input[type="number"],
textarea,
fieldset {
  width: 100%;
  border: 1px solid #333;
  box-sizing: border-box;
}

input:invalid {
  box-shadow: 0 0 5px 1px red;
}

input:focus:invalid {
  box-shadow: none;
}
0 (và các loại khác, chẳng hạn như
input:invalid {
  border: 2px dashed red;
}

input:valid {
  border: 2px solid black;
}
01 và
input:invalid {
  border: 2px dashed red;
}

input:valid {
  border: 2px solid black;
}
02) cũng có thể lấy thuộc tính
input:invalid {
  border: 2px dashed red;
}

input:valid {
  border: 2px solid black;
}
03, chỉ định giá trị tăng lên hoặc giảm khi các điều khiển đầu vào được sử dụng (chẳng hạn như các nút tăng và giảm). Trong ví dụ trên, chúng tôi không bao gồm thuộc tính
input:invalid {
  border: 2px dashed red;
}

input:valid {
  border: 2px solid black;
}
03, do đó, giá trị mặc định là
input:invalid {
  border: 2px dashed red;
}

input:valid {
  border: 2px solid black;
}
05. Điều này có nghĩa là phao, như 3.2, cũng sẽ hiển thị là không hợp lệ.
form {
  font: 1em sans-serif;
  max-width: 320px;
}

p > label {
  display: block;
}

input[type="text"],
input[type="email"],
input[type="number"],
textarea,
fieldset {
  width: 100%;
  border: 1px solid #333;
  box-sizing: border-box;
}

input:invalid {
  box-shadow: 0 0 5px 1px red;
}

input:focus:invalid {
  box-shadow: none;
}
0 (and other types, such as
input:invalid {
  border: 2px dashed red;
}

input:valid {
  border: 2px solid black;
}
01 and
input:invalid {
  border: 2px dashed red;
}

input:valid {
  border: 2px solid black;
}
02) can also take a
input:invalid {
  border: 2px dashed red;
}

input:valid {
  border: 2px solid black;
}
03 attribute, which specifies what increment the value will go up or down by when the input controls are used (such as the up and down number buttons). In the above example we've not included a
input:invalid {
  border: 2px dashed red;
}

input:valid {
  border: 2px solid black;
}
03 attribute, so the value defaults to
input:invalid {
  border: 2px dashed red;
}

input:valid {
  border: 2px solid black;
}
05. This means that floats, like 3.2, will also show as invalid.

Ví dụ đầy đủ

Dưới đây là một ví dụ đầy đủ để hiển thị việc sử dụng các tính năng xác nhận tích hợp của HTML. Đầu tiên, một số HTML:

<form>
  <p>
    <fieldset>
      <legend>Do you have a driver's license?<span aria-label="required">*span>legend>
      
      <input type="radio" required name="driver" id="r1" value="yes"><label for="r1">Yeslabel>
      <input type="radio" required name="driver" id="r2" value="no"><label for="r2">Nolabel>
    fieldset>
  p>
  <p>
    <label for="n1">How old are you?label>
    
    <input type="number" min="12" max="120" step="1" id="n1" name="age"
           pattern="\d+">
  p>
  <p>
    <label for="t1">What's your favorite fruit?<span aria-label="required">*span>label>
    <input type="text" id="t1" name="fruit" list="l1" required
           pattern="[Bb]anana|[Cc]herry|[Aa]pple|[Ss]trawberry|[Ll]emon|[Oo]range">
    <datalist id="l1">
      <option>Bananaoption>
      <option>Cherryoption>
      <option>Appleoption>
      <option>Strawberryoption>
      <option>Lemonoption>
      <option>Orangeoption>
    datalist>
  p>
  <p>
    <label for="t2">What's your e-mail address?label>
    <input type="email" id="t2" name="email">
  p>
  <p>
    <label for="t3">Leave a short messagelabel>
    <textarea id="t3" name="msg" maxlength="140" rows="5">textarea>
  p>
  <p>
    <button>Submitbutton>
  p>
form>

Và bây giờ một số CSS để tạo kiểu HTML:

form {
  font: 1em sans-serif;
  max-width: 320px;
}

p > label {
  display: block;
}

input[type="text"],
input[type="email"],
input[type="number"],
textarea,
fieldset {
  width: 100%;
  border: 1px solid #333;
  box-sizing: border-box;
}

input:invalid {
  box-shadow: 0 0 5px 1px red;
}

input:focus:invalid {
  box-shadow: none;
}

Điều này hiển thị như sau:

Xem các thuộc tính liên quan đến xác thực để biết danh sách đầy đủ các thuộc tính có thể được sử dụng để hạn chế các giá trị đầu vào và các loại đầu vào hỗ trợ chúng.

Xác thực các biểu mẫu bằng cách sử dụng JavaScript

Bạn phải sử dụng JavaScript nếu bạn muốn kiểm soát giao diện của các thông báo lỗi bản địa. Trong phần này, chúng tôi sẽ xem xét các cách khác nhau để làm điều này.

API xác nhận ràng buộc

Hầu hết các trình duyệt đều hỗ trợ API xác thực ràng buộc, bao gồm một tập hợp các phương thức và thuộc tính có sẵn trên các giao diện DOM phần tử biểu mẫu sau:

  • input:invalid {
      border: 2px dashed red;
    }
    
    input:valid {
      border: 2px solid black;
    }
    
    06 (đại diện cho phần tử
    input:invalid {
      border: 2px dashed red;
    }
    
    input:invalid:required {
      background-image: linear-gradient(to right, pink, lightgreen);
    }
    
    input:valid {
      border: 2px solid black;
    }
    
    0)
  • input:invalid {
      border: 2px dashed red;
    }
    
    input:valid {
      border: 2px solid black;
    }
    
    08 (đại diện cho phần tử
    input:invalid {
      border: 2px dashed red;
    }
    
    input:valid {
      border: 2px solid black;
    }
    
    09)
  • input:invalid {
      border: 2px dashed red;
    }
    
    input:valid {
      border: 2px solid black;
    }
    
    10 (đại diện cho một phần tử
    <form>
      <label for="choose">Would you prefer a banana or cherry? (required)label>
      <input id="choose" name="i-like" required />
      <button>Submitbutton>
    form>
    
    8)
  • input:invalid {
      border: 2px dashed red;
    }
    
    input:valid {
      border: 2px solid black;
    }
    
    12 (đại diện cho một phần tử
    input:invalid {
      border: 2px dashed red;
    }
    
    input:valid {
      border: 2px solid black;
    }
    
    13)
  • input:invalid {
      border: 2px dashed red;
    }
    
    input:valid {
      border: 2px solid black;
    }
    
    14 (đại diện cho phần tử
    input:invalid {
      border: 2px dashed red;
    }
    
    input:valid {
      border: 2px solid black;
    }
    
    15)
  • input:invalid {
      border: 2px dashed red;
    }
    
    input:valid {
      border: 2px solid black;
    }
    
    16 (đại diện cho phần tử
    <form>
      <p>
        <fieldset>
          <legend>Do you have a driver's license?<span aria-label="required">*span>legend>
          
          <input type="radio" required name="driver" id="r1" value="yes"><label for="r1">Yeslabel>
          <input type="radio" required name="driver" id="r2" value="no"><label for="r2">Nolabel>
        fieldset>
      p>
      <p>
        <label for="n1">How old are you?label>
        
        <input type="number" min="12" max="120" step="1" id="n1" name="age"
               pattern="\d+">
      p>
      <p>
        <label for="t1">What's your favorite fruit?<span aria-label="required">*span>label>
        <input type="text" id="t1" name="fruit" list="l1" required
               pattern="[Bb]anana|[Cc]herry|[Aa]pple|[Ss]trawberry|[Ll]emon|[Oo]range">
        <datalist id="l1">
          <option>Bananaoption>
          <option>Cherryoption>
          <option>Appleoption>
          <option>Strawberryoption>
          <option>Lemonoption>
          <option>Orangeoption>
        datalist>
      p>
      <p>
        <label for="t2">What's your e-mail address?label>
        <input type="email" id="t2" name="email">
      p>
      <p>
        <label for="t3">Leave a short messagelabel>
        <textarea id="t3" name="msg" maxlength="140" rows="5">textarea>
      p>
      <p>
        <button>Submitbutton>
      p>
    form>
    
    3)

API xác thực ràng buộc làm cho các thuộc tính sau có sẵn trên các yếu tố trên.

  • input:invalid {
      border: 2px dashed red;
    }
    
    input:valid {
      border: 2px solid black;
    }
    
    18: Trả về một thông báo được bản địa hóa mô tả các ràng buộc xác thực mà điều khiển không thỏa mãn (nếu có). Nếu điều khiển không phải là ứng cử viên để xác thực ràng buộc (
    input:invalid {
      border: 2px dashed red;
    }
    
    input:valid {
      border: 2px solid black;
    }
    
    19 là
    input:invalid {
      border: 2px dashed red;
    }
    
    input:valid {
      border: 2px solid black;
    }
    
    20) hoặc giá trị của phần tử thỏa mãn các ràng buộc của nó (là hợp lệ), điều này sẽ trả về một chuỗi trống.
  • input:invalid {
      border: 2px dashed red;
    }
    
    input:valid {
      border: 2px solid black;
    }
    
    21: Trả về một đối tượng
    input:invalid {
      border: 2px dashed red;
    }
    
    input:valid {
      border: 2px solid black;
    }
    
    22 chứa một số thuộc tính mô tả trạng thái hợp lệ của phần tử. Bạn có thể tìm thấy chi tiết đầy đủ của tất cả các thuộc tính có sẵn trong trang tham chiếu
    input:invalid {
      border: 2px dashed red;
    }
    
    input:valid {
      border: 2px solid black;
    }
    
    22; Dưới đây được liệt kê một vài trong số những cái phổ biến hơn:
    • input:invalid {
        border: 2px dashed red;
      }
      
      input:valid {
        border: 2px solid black;
      }
      
      24: Trả về
      input:invalid {
        border: 2px dashed red;
      }
      
      input:valid {
        border: 2px solid black;
      }
      
      25 nếu giá trị không khớp với
      <form>
        <label for="choose">Would you prefer a banana or cherry? (required)label>
        <input id="choose" name="i-like" required />
        <button>Submitbutton>
      form>
      
      4 được chỉ định và
      input:invalid {
        border: 2px dashed red;
      }
      
      input:valid {
        border: 2px solid black;
      }
      
      20 nếu nó phù hợp. Nếu đúng, phần tử phù hợp với
      <form>
        <label for="choose">Would you prefer a banana or cherry? (required)label>
        <input id="choose" name="i-like" required />
        <button>Submitbutton>
      form>
      
      6 CSS Pseudo-Class.
    • input:invalid {
        border: 2px dashed red;
      }
      
      input:valid {
        border: 2px solid black;
      }
      
      29: Trả về
      input:invalid {
        border: 2px dashed red;
      }
      
      input:valid {
        border: 2px solid black;
      }
      
      25 nếu giá trị dài hơn độ dài tối đa được chỉ định bởi thuộc tính
      <form>
        <label for="choose">Would you prefer a banana or cherry? (required)label>
        <input id="choose" name="i-like" required />
        <button>Submitbutton>
      form>
      
      0 hoặc
      input:invalid {
        border: 2px dashed red;
      }
      
      input:valid {
        border: 2px solid black;
      }
      
      20 nếu nó ngắn hơn hoặc bằng tối đa. Nếu đúng, phần tử phù hợp với
      <form>
        <label for="choose">Would you prefer a banana or cherry? (required)label>
        <input id="choose" name="i-like" required />
        <button>Submitbutton>
      form>
      
      6 CSS Pseudo-Class.
    • input:invalid {
        border: 2px dashed red;
      }
      
      input:valid {
        border: 2px solid black;
      }
      
      34: Trả về
      input:invalid {
        border: 2px dashed red;
      }
      
      input:valid {
        border: 2px solid black;
      }
      
      25 nếu giá trị ngắn hơn độ dài tối thiểu được chỉ định bởi thuộc tính
      input:invalid {
        border: 2px dashed red;
      }
      
      input:valid {
        border: 2px solid black;
      }
      
      9 hoặc
      input:invalid {
        border: 2px dashed red;
      }
      
      input:valid {
        border: 2px solid black;
      }
      
      20 nếu nó lớn hơn hoặc bằng tối thiểu. Nếu đúng, phần tử phù hợp với
      <form>
        <label for="choose">Would you prefer a banana or cherry? (required)label>
        <input id="choose" name="i-like" required />
        <button>Submitbutton>
      form>
      
      6 CSS Pseudo-Class.
    • input:invalid {
        border: 2px dashed red;
      }
      
      input:valid {
        border: 2px solid black;
      }
      
      39: Trả về
      input:invalid {
        border: 2px dashed red;
      }
      
      input:valid {
        border: 2px solid black;
      }
      
      25 nếu giá trị lớn hơn mức tối đa được chỉ định bởi thuộc tính
      <form>
        <label for="choose">Would you prefer a banana or cherry? (required)label>
        <input id="choose" name="i-like" required />
        <button>Submitbutton>
      form>
      
      2 hoặc
      input:invalid {
        border: 2px dashed red;
      }
      
      input:valid {
        border: 2px solid black;
      }
      
      20 nếu nó nhỏ hơn hoặc bằng tối đa. Nếu đúng, phần tử phù hợp với các lớp giả
      <form>
        <label for="choose">Would you prefer a banana or cherry? (required)label>
        <input id="choose" name="i-like" required />
        <button>Submitbutton>
      form>
      
      6 và ____27 CSS.
    • input:invalid {
        border: 2px dashed red;
      }
      
      input:valid {
        border: 2px solid black;
      }
      
      45: Trả về
      input:invalid {
        border: 2px dashed red;
      }
      
      input:valid {
        border: 2px solid black;
      }
      
      25 nếu giá trị nhỏ hơn mức tối thiểu được chỉ định bởi thuộc tính
      <form>
        <label for="choose">Would you prefer a banana or cherry? (required)label>
        <input id="choose" name="i-like" required />
        <button>Submitbutton>
      form>
      
      1 hoặc
      input:invalid {
        border: 2px dashed red;
      }
      
      input:valid {
        border: 2px solid black;
      }
      
      20 nếu nó lớn hơn hoặc bằng tối thiểu. Nếu đúng, phần tử phù hợp với các lớp giả
      <form>
        <label for="choose">Would you prefer a banana or cherry? (required)label>
        <input id="choose" name="i-like" required />
        <button>Submitbutton>
      form>
      
      6 và ____27 CSS.
    • input:invalid {
        border: 2px dashed red;
      }
      
      input:valid {
        border: 2px solid black;
      }
      
      51: Trả về
      input:invalid {
        border: 2px dashed red;
      }
      
      input:valid {
        border: 2px solid black;
      }
      
      25 nếu giá trị không nằm trong cú pháp bắt buộc (khi
      <form>
        <label for="choose">Would you prefer a banana or cherry? (required)label>
        <input id="choose" name="i-like" required />
        <button>Submitbutton>
      form>
      
      3 là
      <form>
        <p>
          <fieldset>
            <legend>Do you have a driver's license?<span aria-label="required">*span>legend>
            
            <input type="radio" required name="driver" id="r1" value="yes"><label for="r1">Yeslabel>
            <input type="radio" required name="driver" id="r2" value="no"><label for="r2">Nolabel>
          fieldset>
        p>
        <p>
          <label for="n1">How old are you?label>
          
          <input type="number" min="12" max="120" step="1" id="n1" name="age"
                 pattern="\d+">
        p>
        <p>
          <label for="t1">What's your favorite fruit?<span aria-label="required">*span>label>
          <input type="text" id="t1" name="fruit" list="l1" required
                 pattern="[Bb]anana|[Cc]herry|[Aa]pple|[Ss]trawberry|[Ll]emon|[Oo]range">
          <datalist id="l1">
            <option>Bananaoption>
            <option>Cherryoption>
            <option>Appleoption>
            <option>Strawberryoption>
            <option>Lemonoption>
            <option>Orangeoption>
          datalist>
        p>
        <p>
          <label for="t2">What's your e-mail address?label>
          <input type="email" id="t2" name="email">
        p>
        <p>
          <label for="t3">Leave a short messagelabel>
          <textarea id="t3" name="msg" maxlength="140" rows="5">textarea>
        p>
        <p>
          <button>Submitbutton>
        p>
      form>
      
      0 hoặc
      input:invalid {
        border: 2px dashed red;
      }
      
      input:valid {
        border: 2px solid black;
      }
      
      55) hoặc
      input:invalid {
        border: 2px dashed red;
      }
      
      input:valid {
        border: 2px solid black;
      }
      
      20 nếu cú ​​pháp là chính xác. Nếu
      input:invalid {
        border: 2px dashed red;
      }
      
      input:valid {
        border: 2px solid black;
      }
      
      25, phần tử phù hợp với
      <form>
        <label for="choose">Would you prefer a banana or cherry? (required)label>
        <input id="choose" name="i-like" required />
        <button>Submitbutton>
      form>
      
      6 CSS Pseudo-Class.
    • input:invalid {
        border: 2px dashed red;
      }
      
      input:valid {
        border: 2px solid black;
      }
      
      59: Trả về
      input:invalid {
        border: 2px dashed red;
      }
      
      input:valid {
        border: 2px solid black;
      }
      
      25 nếu phần tử đáp ứng tất cả các ràng buộc xác thực của nó và do đó được coi là hợp lệ hoặc
      input:invalid {
        border: 2px dashed red;
      }
      
      input:valid {
        border: 2px solid black;
      }
      
      20 nếu nó không có bất kỳ ràng buộc nào. Nếu đúng, phần tử phù hợp với
      <form>
        <label for="choose">Would you prefer a banana or cherry? (required)label>
        <input id="choose" name="i-like" required />
        <button>Submitbutton>
      form>
      
      5 CSS Pseudo-Class;
      <form>
        <label for="choose">Would you prefer a banana or cherry? (required)label>
        <input id="choose" name="i-like" required />
        <button>Submitbutton>
      form>
      
      6 CSS Pseudo-Class khác.
    • input:invalid {
        border: 2px dashed red;
      }
      
      input:valid {
        border: 2px solid black;
      }
      
      64: Trả về
      input:invalid {
        border: 2px dashed red;
      }
      
      input:valid {
        border: 2px solid black;
      }
      
      25 Nếu phần tử có thuộc tính
      input:invalid {
        border: 2px dashed red;
      }
      
      input:valid {
        border: 2px solid black;
      }
      
      8, nhưng không có giá trị, hoặc
      input:invalid {
        border: 2px dashed red;
      }
      
      input:valid {
        border: 2px solid black;
      }
      
      20 khác. Nếu đúng, phần tử phù hợp với
      <form>
        <label for="choose">Would you prefer a banana or cherry? (required)label>
        <input id="choose" name="i-like" required />
        <button>Submitbutton>
      form>
      
      6 CSS Pseudo-Class.
  • input:invalid {
      border: 2px dashed red;
    }
    
    input:valid {
      border: 2px solid black;
    }
    
    19: Trả về
    input:invalid {
      border: 2px dashed red;
    }
    
    input:valid {
      border: 2px solid black;
    }
    
    25 nếu phần tử sẽ được xác thực khi biểu mẫu được gửi;
    input:invalid {
      border: 2px dashed red;
    }
    
    input:valid {
      border: 2px solid black;
    }
    
    20 Nếu không.

API xác thực ràng buộc cũng cung cấp các phương thức sau có sẵn trên các phần tử trên và phần tử

input:invalid {
  border: 2px dashed red;
}

input:valid {
  border: 2px solid black;
}
72.

  • input:invalid {
      border: 2px dashed red;
    }
    
    input:valid {
      border: 2px solid black;
    }
    
    73: Trả về
    input:invalid {
      border: 2px dashed red;
    }
    
    input:valid {
      border: 2px solid black;
    }
    
    25 nếu giá trị của phần tử không có vấn đề về tính hợp lệ;
    input:invalid {
      border: 2px dashed red;
    }
    
    input:valid {
      border: 2px solid black;
    }
    
    20 Nếu không. Nếu phần tử không hợp lệ, phương pháp này cũng kích hoạt một sự kiện
    input:invalid {
      border: 2px dashed red;
    }
    
    input:valid {
      border: 2px solid black;
    }
    
    76 vào phần tử.
  • input:invalid {
      border: 2px dashed red;
    }
    
    input:valid {
      border: 2px solid black;
    }
    
    77: Báo cáo (các) trường không hợp lệ bằng cách sử dụng các sự kiện. Phương pháp này rất hữu ích khi kết hợp với
    input:invalid {
      border: 2px dashed red;
    }
    
    input:valid {
      border: 2px solid black;
    }
    
    78 trong trình xử lý sự kiện
    input:invalid {
      border: 2px dashed red;
    }
    
    input:valid {
      border: 2px solid black;
    }
    
    79.
  • input:invalid {
      border: 2px dashed red;
    }
    
    input:valid {
      border: 2px solid black;
    }
    
    80: Thêm thông báo lỗi tùy chỉnh vào phần tử; Nếu bạn đặt thông báo lỗi tùy chỉnh, phần tử được coi là không hợp lệ và lỗi được chỉ định sẽ được hiển thị. Điều này cho phép bạn sử dụng mã JavaScript để thiết lập lỗi xác thực ngoài các lỗi được cung cấp bởi các ràng buộc xác thực HTML tiêu chuẩn. Thông báo được hiển thị cho người dùng khi báo cáo vấn đề.

Thực hiện thông báo lỗi tùy chỉnh

Như bạn đã thấy trong các ví dụ ràng buộc xác thực HTML trước đó, mỗi khi người dùng cố gắng gửi biểu mẫu không hợp lệ, trình duyệt sẽ hiển thị thông báo lỗi. Cách thông báo này được hiển thị tùy thuộc vào trình duyệt.

Những tin nhắn tự động này có hai nhược điểm:

  • Không có cách tiêu chuẩn để thay đổi giao diện của họ với CSS.
  • Chúng phụ thuộc vào ngôn ngữ trình duyệt, điều đó có nghĩa là bạn có thể có một trang bằng một ngôn ngữ nhưng một thông báo lỗi được hiển thị bằng ngôn ngữ khác, như đã thấy trong ảnh chụp màn hình Firefox sau đây.

Hướng dẫn how do you insert a validation in html? - làm cách nào để bạn chèn xác thực vào html?

Tùy chỉnh các thông báo lỗi này là một trong những trường hợp sử dụng phổ biến nhất của API xác thực ràng buộc. Hãy làm việc thông qua một ví dụ đơn giản về cách làm điều này.

Chúng tôi sẽ bắt đầu với một số HTML đơn giản (vui lòng đặt nó vào một tệp HTML trống; sử dụng một bản sao mới của Fruit-start.html làm cơ sở, nếu bạn thích):

input:invalid {
  border: 2px dashed red;
}

input:valid {
  border: 2px solid black;
}
0

Và thêm JavaScript sau vào trang:

input:invalid {
  border: 2px dashed red;
}

input:valid {
  border: 2px solid black;
}
1

Ở đây chúng tôi lưu trữ một tham chiếu đến đầu vào email, sau đó thêm trình nghe sự kiện cho nó chạy mã chứa mỗi lần giá trị bên trong đầu vào được thay đổi.

Bên trong mã chứa, chúng tôi kiểm tra xem thuộc tính

input:invalid {
  border: 2px dashed red;
}

input:valid {
  border: 2px solid black;
}
81 của email có trả về
input:invalid {
  border: 2px dashed red;
}

input:valid {
  border: 2px solid black;
}
25 hay không, có nghĩa là giá trị chứa không khớp với mẫu cho địa chỉ email được hình thành tốt. Nếu vậy, chúng tôi gọi phương thức
input:invalid {
  border: 2px dashed red;
}

input:valid {
  border: 2px solid black;
}
83 với thông báo tùy chỉnh được hiển thị bằng cách gọi
input:invalid {
  border: 2px dashed red;
}

input:valid {
  border: 2px solid black;
}
77. Điều này hiển thị đầu vào không hợp lệ, do đó khi bạn cố gắng gửi biểu mẫu, việc gửi không thành công và thông báo lỗi tùy chỉnh được hiển thị.

Nếu thuộc tính

input:invalid {
  border: 2px dashed red;
}

input:valid {
  border: 2px solid black;
}
81 trả về
input:invalid {
  border: 2px dashed red;
}

input:valid {
  border: 2px solid black;
}
20, chúng tôi sẽ gọi phương thức
input:invalid {
  border: 2px dashed red;
}

input:valid {
  border: 2px solid black;
}
83 là một chuỗi trống. Điều này hiển thị đầu vào hợp lệ, vì vậy biểu mẫu sẽ gửi.

Bạn có thể dùng thử dưới đây:

Một ví dụ chi tiết hơn

Bây giờ chúng ta đã thấy một ví dụ thực sự đơn giản, hãy xem cách chúng ta có thể sử dụng API này để xây dựng một số xác thực tùy chỉnh phức tạp hơn một chút.

Đầu tiên, HTML. Một lần nữa, hãy thoải mái xây dựng điều này cùng với chúng tôi:

input:invalid {
  border: 2px dashed red;
}

input:valid {
  border: 2px solid black;
}
2

Mẫu đơn giản này sử dụng thuộc tính

input:invalid {
  border: 2px dashed red;
}

input:valid {
  border: 2px solid black;
}
88 để tắt xác thực tự động của trình duyệt; Điều này cho phép tập lệnh của chúng tôi kiểm soát xác thực. Tuy nhiên, điều này không vô hiệu hóa hỗ trợ cho API xác thực ràng buộc cũng như việc áp dụng các lớp giả CSS như
<form>
  <label for="choose">Would you prefer a banana or cherry? (required)label>
  <input id="choose" name="i-like" required />
  <button>Submitbutton>
form>
5, v.v. điều đó có nghĩa là mặc dù trình duyệt không tự động kiểm tra tính hợp lệ của biểu mẫu trước khi gửi dữ liệu của nó, bạn có thể Vẫn tự làm và tạo kiểu hình thức cho phù hợp.

Đầu vào của chúng tôi để xác thực là

input:invalid {
  border: 2px dashed red;
}

input:valid {
  border: 2px solid black;
}
90, là
input:invalid {
  border: 2px dashed red;
}

input:valid {
  border: 2px solid black;
}
8 và có
input:invalid {
  border: 2px dashed red;
}

input:valid {
  border: 2px solid black;
}
9 của 8 ký tự. Hãy kiểm tra chúng bằng mã riêng của chúng tôi và hiển thị thông báo lỗi tùy chỉnh cho từng thông báo.

Chúng tôi đang nhắm đến việc hiển thị các thông báo lỗi bên trong phần tử

input:invalid {
  border: 2px dashed red;
}

input:valid {
  border: 2px solid black;
}
93. Thuộc tính
input:invalid {
  border: 2px dashed red;
}

input:valid {
  border: 2px solid black;
}
94 được đặt trên
input:invalid {
  border: 2px dashed red;
}

input:valid {
  border: 2px solid black;
}
93 để đảm bảo rằng thông báo lỗi tùy chỉnh của chúng tôi sẽ được trình bày cho mọi người, bao gồm cả việc đọc ra cho người dùng sàng lọc.

Lưu ý: Một điểm quan trọng ở đây là việc cài đặt thuộc tính

input:invalid {
  border: 2px dashed red;
}

input:valid {
  border: 2px solid black;
}
88 trên biểu mẫu là điều ngăn chặn biểu mẫu hiển thị bong bóng thông báo lỗi của chính nó và cho phép chúng tôi thay vào đó hiển thị các thông báo lỗi tùy chỉnh trong DOM theo cách nào đó của sự lựa chọn của chúng tôi. A key point here is that setting the
input:invalid {
  border: 2px dashed red;
}

input:valid {
  border: 2px solid black;
}
88 attribute on the form is what stops the form from showing its own error message bubbles, and allows us to instead display the custom error messages in the DOM in some manner of our own choosing.

Bây giờ vào một số CSS cơ bản để cải thiện giao diện của biểu mẫu một chút và cung cấp một số phản hồi trực quan khi dữ liệu đầu vào không hợp lệ:

input:invalid {
  border: 2px dashed red;
}

input:valid {
  border: 2px solid black;
}
3

Bây giờ chúng ta hãy nhìn vào JavaScript thực hiện xác thực lỗi tùy chỉnh.

input:invalid {
  border: 2px dashed red;
}

input:valid {
  border: 2px solid black;
}
4

Các ý kiến ​​giải thích những điều khá tốt, nhưng ngắn gọn:

  • Mỗi lần chúng tôi thay đổi giá trị của đầu vào, chúng tôi kiểm tra xem nó có chứa dữ liệu hợp lệ không. Nếu nó có thì chúng tôi sẽ xóa bất kỳ thông báo lỗi nào được hiển thị. Nếu dữ liệu không hợp lệ, chúng tôi sẽ chạy
    input:invalid {
      border: 2px dashed red;
    }
    
    input:valid {
      border: 2px solid black;
    }
    
    97 để hiển thị lỗi thích hợp.
  • Mỗi lần chúng tôi cố gắng gửi biểu mẫu, chúng tôi lại kiểm tra xem dữ liệu có hợp lệ không. Nếu vậy, chúng tôi để biểu mẫu gửi. Nếu không, chúng tôi chạy
    input:invalid {
      border: 2px dashed red;
    }
    
    input:valid {
      border: 2px solid black;
    }
    
    97 để hiển thị lỗi thích hợp và dừng biểu mẫu gửi với
    input:invalid {
      border: 2px dashed red;
    }
    
    input:valid {
      border: 2px solid black;
    }
    
    78.
  • Hàm
    input:invalid {
      border: 2px dashed red;
    }
    
    input:valid {
      border: 2px solid black;
    }
    
    97 sử dụng các thuộc tính khác nhau của đối tượng
    input:invalid {
      border: 2px dashed red;
    }
    
    input:valid {
      border: 2px solid black;
    }
    
    21 của đầu vào để xác định lỗi là gì và sau đó hiển thị thông báo lỗi khi thích hợp.

Đây là kết quả trực tiếp:

API xác thực ràng buộc cung cấp cho bạn một công cụ mạnh mẽ để xử lý xác thực biểu mẫu, cho phép bạn có quyền kiểm soát rất lớn đối với giao diện người dùng ở trên và vượt ra ngoài những gì bạn có thể làm với HTML và CSS.

Xác thực các biểu mẫu mà không có API tích hợp

Trong một số trường hợp, chẳng hạn như điều khiển tùy chỉnh, bạn sẽ không thể hoặc không muốn sử dụng API xác thực ràng buộc. Bạn vẫn có thể sử dụng JavaScript để xác thực biểu mẫu của mình, nhưng bạn sẽ phải tự viết.

Để xác thực một biểu mẫu, hãy tự hỏi mình một vài câu hỏi:

Tôi nên thực hiện loại xác nhận nào?

Bạn cần xác định cách xác thực dữ liệu của mình: hoạt động chuỗi, chuyển đổi loại, biểu thức chính quy, v.v. Tuỳ bạn.

Tôi nên làm gì nếu biểu mẫu không xác thực?

Đây rõ ràng là một vấn đề UI. Bạn phải quyết định làm thế nào biểu mẫu sẽ hoạt động. Hình thức có gửi dữ liệu không? Bạn có nên làm nổi bật các trường bị lỗi? Bạn có nên hiển thị thông báo lỗi không?

Làm thế nào tôi có thể giúp người dùng sửa dữ liệu không hợp lệ?

Để giảm sự thất vọng của người dùng, điều rất quan trọng là cung cấp càng nhiều thông tin hữu ích càng tốt để hướng dẫn họ sửa chữa đầu vào của họ. Bạn nên cung cấp các đề xuất trước để họ biết những gì mong đợi, cũng như thông báo lỗi rõ ràng. Nếu bạn muốn đào vào các yêu cầu UI xác thực biểu mẫu, đây là một số bài viết hữu ích bạn nên đọc:

  • Giúp người dùng nhập đúng dữ liệu trong các biểu mẫu
  • Xác nhận đầu vào
  • Cách báo cáo lỗi trong biểu mẫu: 10 Hướng dẫn thiết kế

Một ví dụ không sử dụng API xác thực ràng buộc

Để minh họa điều này, sau đây là phiên bản đơn giản hóa của ví dụ trước mà không có API xác thực ràng buộc.

HTML gần như giống nhau; Chúng tôi vừa xóa các tính năng xác thực HTML.

input:invalid {
  border: 2px dashed red;
}

input:valid {
  border: 2px solid black;
}
5

Tương tự, CSS không cần phải thay đổi nhiều; Chúng tôi vừa biến lớp giả CSS Pseudo thành một lớp thực và tránh sử dụng bộ chọn thuộc tính không hoạt động trên Internet Explorer 6.

input:invalid {
  border: 2px dashed red;
}

input:valid {
  border: 2px solid black;
}
6

Những thay đổi lớn nằm trong mã JavaScript, cần phải thực hiện nhiều việc nâng cao hơn.

input:invalid {
  border: 2px dashed red;
}

input:valid {
  border: 2px solid black;
}
7

Kết quả trông như thế này:

Như bạn có thể thấy, không khó để tự mình xây dựng một hệ thống xác thực. Phần khó khăn là làm cho nó đủ chung để sử dụng cả nền tảng chéo và trên bất kỳ hình thức nào bạn có thể tạo ra. Có nhiều thư viện có sẵn để thực hiện xác thực biểu mẫu, chẳng hạn như xác nhận.js.

Kiểm tra kỹ năng của bạn!

Bạn đã đạt đến cuối bài viết này, nhưng bạn có thể nhớ thông tin quan trọng nhất không? Bạn có thể tìm thấy một số bài kiểm tra tiếp theo để xác minh rằng bạn đã giữ lại thông tin này trước khi bạn tiếp tục - xem Kiểm tra kỹ năng của bạn: Xác thực hình thức.

Bản tóm tắt

Xác thực biểu mẫu phía máy khách Đôi khi yêu cầu JavaScript nếu bạn muốn tùy chỉnh thông báo kiểu dáng và lỗi, nhưng nó luôn đòi hỏi bạn phải suy nghĩ cẩn thận về người dùng. Luôn nhớ giúp người dùng của bạn sửa dữ liệu họ cung cấp. Cuối cùng, hãy chắc chắn:

  • Hiển thị thông báo lỗi rõ ràng.
  • Được cho phép về định dạng đầu vào.
  • Chỉ ra chính xác nơi xảy ra lỗi, đặc biệt là trên các hình thức lớn.

Khi bạn đã kiểm tra xem biểu mẫu được điền chính xác, biểu mẫu có thể được gửi. Chúng tôi sẽ bao gồm việc gửi dữ liệu biểu mẫu tiếp theo.

  • Trước
  • Tổng quan: Hình thức
  • Tiếp theo

Trong mô -đun này

Chủ đê nâng cao

Xác nhận và các loại của nó trong HTML là gì?

Xác thực biểu mẫu HTML là một quá trình kiểm tra nội dung của trang HTML để tránh dữ liệu bị lỗi được gửi đến máy chủ. Quá trình này là một bước quan trọng trong việc phát triển các ứng dụng web dựa trên HTML, vì nó có thể dễ dàng cải thiện chất lượng của trang web hoặc ứng dụng web.a process of examining the HTML form page's contents to avoid errored-out data being sent to the server. This process is a significant step in developing HTML-based web applications, as it can easily improve the quality of the web page or the web application.

Xác thực biểu mẫu HTML5 là gì?

HTML5 đã thêm các thuộc tính mới thiết lập các quy tắc xác thực cho một trường đầu vào đã cho.Các thuộc tính mới này bao gồm: Yêu cầu: Chỉ định rằng trường không thể trống.MIN / MAX: Chỉ định phạm vi của các giá trị được phép cho các đầu vào số.minlength / maxlength: Chỉ định phạm vi độ dài được phép cho văn bản ...declaratively set validation rules for a given input field. These new attributes include: required : Specifies that the field can't be blank. min / max : Specifies the range of allowed values for numeric inputs. minlength / maxlength : Specifies the range of allowed length for text ...

Thuộc tính HTML nào được sử dụng để xác thực trường đầu vào?

Thuộc tính cần thiết là một thuộc tính Boolean.Khi có mặt, nó chỉ định rằng một trường đầu vào phải được điền trước khi gửi biểu mẫu.Lưu ý: Thuộc tính cần thiết hoạt động với các loại đầu vào sau: văn bản, tìm kiếm, url, tel, email, mật khẩu, người chọn ngày, số, hộp kiểm, radio và tệp.required attribute is a boolean attribute. When present, it specifies that an input field must be filled out before submitting the form. Note: The required attribute works with the following input types: text, search, url, tel, email, password, date pickers, number, checkbox, radio, and file.

Ý nghĩa của việc xác nhận trong HTML là gì?

Xác thực HTML là một kiểm tra để xem mã nguồn của trang web có tuân thủ các tiêu chuẩn nhất định hay không.Lỗi thường được tô sáng để giúp chủ sở hữu thực hiện sửa chữa trước khi kiểm tra lại.Nó không giống như xác thực nội dung.a check to see if a website's source code complies with certain standards. Errors are usually highlighted to help the owner make corrections before testing again. It is not the same as content validation.