Hướng dẫn how do you show error messages in html form? - làm cách nào để hiển thị thông báo lỗi trong dạng html?

Sử dụng xác thực JavaScript là một trong những phần hấp dẫn nhất trong phát triển web, nơi bạn có thể hiển thị các thông báo lỗi cho người dùng trong trường hợp biểu mẫu không chứa dữ liệu trường bắt buộc. Hãy thêm một biểu mẫu trước khi làm việc trên phần xác thực.

	
Your Name
Your Email
Your Phone
Your Message

Ở đây, chúng tôi đã tạo một biểu mẫu thêm một tên vào nó bằng phương thức POST để ngăn biểu mẫu được gửi qua URL và thêm chức năng JavaScript để được khởi tạo trên trường hợp gửi biểu mẫu. Chúng tôi cũng đã thêm một ID trống bên cạnh các nhãn cho mỗi trường biểu mẫu nơi chúng tôi sẽ hiển thị thông báo lỗi. Bây giờ, hãy thêm chức năng để xác thực nó.

function validateForm[]{
	var name = document.forms["myForm"]["your-name"].value;
	var email = document.forms["myForm"]["your-email"].value;
	var phone = document.forms["myForm"]["your-phone"].value;
	var message = document.forms["myForm"]["your-message"].value;

	if [name.lengthWould you prefer a banana or cherry?
  
  Submit

1 và

  Would you prefer a banana or cherry?
  
  Submit

2: Chỉ định độ dài tối thiểu và tối đa của dữ liệu văn bản [chuỗi].
  • 
      Would you prefer a banana or cherry?
      
      Submit
    
    
    3 và
    
      Would you prefer a banana or cherry?
      
      Submit
    
    
    4: Chỉ định các giá trị tối thiểu và tối đa của các loại đầu vào số.
  • 
      Would you prefer a banana or cherry?
      
      Submit
    
    
    5: 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.
  • 
      Would you prefer a banana or cherry?
      
      Submit
    
    
    6: 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ụ:
      
        Would you prefer a banana or cherry?
        
        Submit
      
      
      9] 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

    input:invalid {
      border: 2px dashed red;
    }
    
    input:valid {
      border: 2px solid black;
    }
    
    0 với một
    input:invalid {
      border: 2px dashed red;
    }
    
    input:valid {
      border: 2px solid black;
    }
    
    1 được liên kết và gửi
    input:invalid {
      border: 2px dashed red;
    }
    
    input:valid {
      border: 2px solid black;
    }
    
    2. 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.

    
      Would you prefer a banana or cherry?
      
      Submit
    
    

    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:valid {
      border: 2px solid black;
    }
    
    3 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

    
      Would you prefer a banana or cherry?
      
      Submit
    
    
    0. Để 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 ____35 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 ____28.

    Thêm thuộc tính

    
      Would you prefer a banana or cherry?
      
      Submit
    
    
    0 vào đầu vào của bạn, như được hiển thị bên dưới.

    
      Would you prefer a banana or cherry? [required]
      
      Submit
    
    

    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

    
      Would you prefer a banana or cherry?
      
      Submit
    
    
    0 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:valid {
      border: 2px solid black;
    }
    
    5 cho dù nó có giá trị hay không. Nếu
    input:invalid {
      border: 2px dashed red;
    }
    
    input:valid {
      border: 2px solid black;
    }
    
    0 không có giá trị,
    
      Would you prefer a banana or cherry? [required]
      
      Submit
    
    
    1 sẽ khớp với lớp giả
    
      Would you prefer a banana or cherry?
      
      Submit
    
    
    8.

    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

    
      Would you prefer a banana or cherry?
      
      Submit
    
    
    6, 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.

    • 
        Would you prefer a banana or cherry? [required]
        
        Submit
      
      
      4 - khớp với một ký tự là
      
        Would you prefer a banana or cherry? [required]
        
        Submit
      
      
      4 [không phải
      
        Would you prefer a banana or cherry? [required]
        
        Submit
      
      
      6, không phải
      
        Would you prefer a banana or cherry? [required]
        
        Submit
      
      
      7, v.v.].
    • 
        Would you prefer a banana or cherry? [required]
        
        Submit
      
      
      8 - khớp
      
        Would you prefer a banana or cherry? [required]
        
        Submit
      
      
      4, tiếp theo là
      
        Would you prefer a banana or cherry? [required]
        
        Submit
      
      
      6, tiếp theo là
      input:invalid {
        border: 2px dashed red;
      }
      
      input:invalid:required {
        background-image: linear-gradient[to right, pink, lightgreen];
      }
      
      input:valid {
        border: 2px solid black;
      }
      
      1.
    • ________ 52 phù hợp với
      
        Would you prefer a banana or cherry? [required]
        
        Submit
      
      
      4, tùy chọn theo sau là một
      
        Would you prefer a banana or cherry? [required]
        
        Submit
      
      
      6, tiếp theo là
      input:invalid {
        border: 2px dashed red;
      }
      
      input:invalid:required {
        background-image: linear-gradient[to right, pink, lightgreen];
      }
      
      input:valid {
        border: 2px solid black;
      }
      
      1. [
      input:invalid {
        border: 2px dashed red;
      }
      
      input:invalid:required {
        background-image: linear-gradient[to right, pink, lightgreen];
      }
      
      input:valid {
        border: 2px solid black;
      }
      
      6 hoặc
      
        Would you prefer a banana or cherry? [required]
        
        Submit
      
      
      8]
    • ________ 58 phù hợp với
      
        Would you prefer a banana or cherry? [required]
        
        Submit
      
      
      4, tùy chọn theo sau là bất kỳ số lượng
      
        Would you prefer a banana or cherry? [required]
        
        Submit
      
      
      6 nào, tiếp theo là
      input:invalid {
        border: 2px dashed red;
      }
      
      input:invalid:required {
        background-image: linear-gradient[to right, pink, lightgreen];
      }
      
      input:valid {
        border: 2px solid black;
      }
      
      1. [
      input:invalid {
        border: 2px dashed red;
      }
      
      input:invalid:required {
        background-image: linear-gradient[to right, pink, lightgreen];
      }
      
      input:valid {
        border: 2px solid black;
      }
      
      6,
      
        Would you prefer a banana or cherry? [required]
        
        Submit
      
      
      8,
      
        Would you prefer a banana or a cherry?
        
        Submit
      
      
      4, v.v.].
    • 
        Would you prefer a banana or a cherry?
        
        Submit
      
      
      5 - khớp với một ký tự là
      
        Would you prefer a banana or cherry? [required]
        
        Submit
      
      
      4 hoặc
      
        Would you prefer a banana or cherry? [required]
        
        Submit
      
      
      6.
    • 
        Would you prefer a banana or a cherry?
        
        Submit
      
      
      8 - khớp chính xác
      
        Would you prefer a banana or cherry? [required]
        
        Submit
      
      
      8 hoặc chính xác
      input:invalid {
        border: 2px dashed red;
      }
      
      input:valid {
        border: 2px solid black;
      }
      
      0 [nhưng không phải
      input:invalid {
        border: 2px dashed red;
      }
      
      input:valid {
        border: 2px solid black;
      }
      
      1 hoặc
      
        Would you prefer a banana or cherry? [required]
        
        Submit
      
      
      4 hoặc
      input:invalid {
        border: 2px dashed red;
      }
      
      input:valid {
        border: 2px solid black;
      }
      
      3, 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

    
      Would you prefer a banana or cherry?
      
      Submit
    
    
    6 như thế này:

    
      Would you prefer a banana or a cherry?
      
      Submit
    
    

    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ử

    input:invalid {
      border: 2px dashed red;
    }
    
    input:valid {
      border: 2px solid black;
    }
    
    0 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

    
      Would you prefer a banana or cherry?
      
      Submit
    
    
    6 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

    input:invalid {
      border: 2px dashed red;
    }
    
    input:valid {
      border: 2px solid black;
    }
    
    0 không khớp với mẫu biểu thức chính quy,
    
      Would you prefer a banana or cherry? [required]
      
      Submit
    
    
    1 sẽ khớp với lớp giả
    
      Would you prefer a banana or cherry?
      
      Submit
    
    
    8.

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

    input:invalid {
      border: 2px dashed red;
    }
    
    input:valid {
      border: 2px solid black;
    }
    
    0 không cần thuộc tính
    
      Would you prefer a banana or cherry?
      
      Submit
    
    
    6 được xác thực theo biểu thức chính quy. Ví dụ, chỉ định loại
    
      
        Would you prefer a banana or a cherry?
        
      
      
        How many would you like?
        
      
      
        Submit
      
    
    
    2 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
    
      
        Would you prefer a banana or a cherry?
        
      
      
        How many would you like?
        
      
      
        Submit
      
    
    
    3.
    Some
    input:invalid {
      border: 2px dashed red;
    }
    
    input:valid {
      border: 2px solid black;
    }
    
    0 element types don't need a
    
      Would you prefer a banana or cherry?
      
      Submit
    
    
    6 attribute to be validated against a regular expression. Specifying the
    
      
        Would you prefer a banana or a cherry?
        
      
      
        How many would you like?
        
      
      
        Submit
      
    
    
    2 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
    
      
        Would you prefer a banana or a cherry?
        
      
      
        How many would you like?
        
      
      
        Submit
      
    
    
    3 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

    input:invalid {
      border: 2px dashed red;
    }
    
    input:valid {
      border: 2px solid black;
    }
    
    0 hoặc
    
      
        Would you prefer a banana or a cherry?
        
      
      
        How many would you like?
        
      
      
        Submit
      
    
    
    5 bằng cách sử dụng các thuộc tính
    
      Would you prefer a banana or cherry?
      
      Submit
    
    
    1 và
    
      Would you prefer a banana or cherry?
      
      Submit
    
    
    2. 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ị
    
      Would you prefer a banana or cherry?
      
      Submit
    
    
    1 hoặc nhiều hơn giá trị
    
      Would you prefer a banana or cherry?
      
      Submit
    
    
    2.

    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

    
      Would you prefer a banana or cherry?
      
      Submit
    
    
    2 là cung cấp phản hồi đếm ký tự theo cách có thể truy cập và để họ chỉnh sửa nội dung của họ xuống 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
    
      Would you prefer a banana or cherry?
      
      Submit
    
    
    2, 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à

    input:invalid {
      border: 2px dashed red;
    }
    
    input:valid {
      border: 2px solid black;
    }
    
    div {
      margin-bottom: 10px;
    }
    
    2], các thuộc tính
    
      Would you prefer a banana or cherry?
      
      Submit
    
    
    3 và
    
      Would you prefer a banana or cherry?
      
      Submit
    
    
    4 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ử

    input:invalid {
      border: 2px dashed red;
    }
    
    input:valid {
      border: 2px solid black;
    }
    
    div {
      margin-bottom: 10px;
    }
    
    5 và thay thế nó bằng cách sau:

    
      
        Would you prefer a banana or a cherry?
        
      
      
        How many would you like?
        
      
      
        Submit
      
    
    

    • Ở đây bạn sẽ thấy rằng chúng tôi đã cho trường
      input:invalid {
        border: 2px dashed red;
      }
      
      input:valid {
        border: 2px solid black;
      }
      
      div {
        margin-bottom: 10px;
      }
      
      6 một
      
        Would you prefer a banana or cherry?
        
        Submit
      
      
      1 và
      
        Would you prefer a banana or cherry?
        
        Submit
      
      
      2 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
      input:invalid {
        border: 2px dashed red;
      }
      
      input:valid {
        border: 2px solid black;
      }
      
      div {
        margin-bottom: 10px;
      }
      
      9 một
      
        Would you prefer a banana or cherry?
        
        Submit
      
      
      3 của một và
      
        Would you prefer a banana or cherry?
        
        Submit
      
      
      4 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 ý:

    input:invalid {
      border: 2px dashed red;
    }
    
    input:valid {
      border: 2px solid black;
    }
    
    div {
      margin-bottom: 10px;
    }
    
    2 [và các loại khác, chẳng hạn như
    function validateForm[]{
    	var name = document.forms["myForm"]["your-name"].value;
    	var email = document.forms["myForm"]["your-email"].value;
    	var phone = document.forms["myForm"]["your-phone"].value;
    	var message = document.forms["myForm"]["your-message"].value;
    
    	if [name.length

    Chủ Đề