Hướng dẫn how do you control input type number in html? - làm cách nào để bạn kiểm soát số loại đầu vào trong html?

<input type="text" inputmode="numeric" pattern="\d*" />
4 Các yếu tố của loại
<input type="text" inputmode="numeric" pattern="\d*" />
5 được sử dụng để cho phép người dùng nhập một số. Chúng bao gồm xác nhận tích hợp để từ chối các mục không phải là số lượng.
<input type="text" inputmode="numeric" pattern="\d*" />
5
are used to let the user enter a number. They include built-in validation to reject non-numerical entries.

Trình duyệt có thể chọn cung cấp mũi tên bước để cho phép người dùng tăng và giảm giá trị bằng cách sử dụng chuột của họ hoặc bằng cách chạm vào đầu ngón tay.

Thử nó

Trên các trình duyệt không hỗ trợ đầu vào loại

<input type="text" inputmode="numeric" pattern="\d*" />
5, đầu vào
<input type="text" inputmode="numeric" pattern="\d*" />
5 rơi trở lại loại
<input type="text" inputmode="numeric" pattern="\d*" />
8.

Giá trị A
<input type="text" inputmode="numeric" pattern="\d*" />
9 đại diện cho một số hoặc trống
Sự kiện
<label for="ticketNum">Number of tickets you would like to buy:</label>
<input id="ticketNum" type="number" name="ticketNum" value="0" />
0 và
<label for="ticketNum">Number of tickets you would like to buy:</label>
<input id="ticketNum" type="number" name="ticketNum" value="0" />
1
Được hỗ trợ các thuộc tính chung
<label for="ticketNum">Number of tickets you would like to buy:</label>
<input id="ticketNum" type="number" name="ticketNum" value="0" />
2,
<label for="ticketNum">Number of tickets you would like to buy:</label>
<input id="ticketNum" type="number" name="ticketNum" value="0" />
3,
<label for="ticketNum">Number of tickets you would like to buy:</label>
<input id="ticketNum" type="number" name="ticketNum" value="0" />
4,
<label for="ticketNum">Number of tickets you would like to buy:</label>
<input id="ticketNum" type="number" name="ticketNum" value="0" />
5
Thuộc tính IDL
<label for="ticketNum">Number of tickets you would like to buy:</label>
<input id="ticketNum" type="number" name="ticketNum" value="0" />
3,
<label for="ticketNum">Number of tickets you would like to buy:</label>
<input id="ticketNum" type="number" name="ticketNum" value="0" />
7,
<label for="ticketNum">Number of tickets you would like to buy:</label>
<input id="ticketNum" type="number" name="ticketNum" value="0" />
8
Giao diện DOM

<label for="ticketNum">Number of tickets you would like to buy:</label>
<input id="ticketNum" type="number" name="ticketNum" value="0" />
9

Phương pháp
<input type="number" placeholder="Multiple of 10" />
0,
<input type="number" placeholder="Multiple of 10" />
1,
<input type="number" placeholder="Multiple of 10" />
2

Giá trị

A

<input type="text" inputmode="numeric" pattern="\d*" />
9 đại diện cho một số hoặc trống

<input id="number" type="number" value="42" />

Sự kiện

<label for="ticketNum">Number of tickets you would like to buy:</label>
<input id="ticketNum" type="number" name="ticketNum" value="0" />
0 và
<label for="ticketNum">Number of tickets you would like to buy:</label>
<input id="ticketNum" type="number" name="ticketNum" value="0" />
1

<label for="ticketNum">Number of tickets you would like to buy:</label> <input id="ticketNum" type="number" name="ticketNum" value="0" /> 3

Được hỗ trợ các thuộc tính chung

<input type="number" placeholder="multiple of 10" step="10" /> 1

<label for="ticketNum">Number of tickets you would like to buy:</label>
<input id="ticketNum" type="number" name="ticketNum" value="0" />
2,
<label for="ticketNum">Number of tickets you would like to buy:</label>
<input id="ticketNum" type="number" name="ticketNum" value="0" />
3,
<label for="ticketNum">Number of tickets you would like to buy:</label>
<input id="ticketNum" type="number" name="ticketNum" value="0" />
4,
<label for="ticketNum">Number of tickets you would like to buy:</label>
<input id="ticketNum" type="number" name="ticketNum" value="0" />
5

Thuộc tính IDL

<input type="number" placeholder="multiple of 10" step="10" /> 4

<label for="ticketNum">Number of tickets you would like to buy:</label>
<input id="ticketNum" type="number" name="ticketNum" value="0" />
3,
<label for="ticketNum">Number of tickets you would like to buy:</label>
<input id="ticketNum" type="number" name="ticketNum" value="0" />
7,
<label for="ticketNum">Number of tickets you would like to buy:</label>
<input id="ticketNum" type="number" name="ticketNum" value="0" />
8

Giao diện DOM

<label for="ticketNum">Number of tickets you would like to buy:</label> <input id="ticketNum" type="number" name="ticketNum" value="0" /> 4

Phương pháp

<input type="number" placeholder="Multiple of 10" />
0,
<input type="number" placeholder="Multiple of 10" />
1,
<input type="number" placeholder="Multiple of 10" />
2

Một số đại diện cho giá trị của số được nhập vào đầu vào. Bạn có thể đặt giá trị mặc định cho đầu vào bằng cách bao gồm một số bên trong thuộc tính

<label for="ticketNum">Number of tickets you would like to buy:</label>
<input id="ticketNum" type="number" name="ticketNum" value="0" />
7, như vậy: Avoid using the
<label for="ticketNum">Number of tickets you would like to buy:</label>
<input id="ticketNum" type="number" name="ticketNum" value="0" />
4 attribute if you can. It is not as semantically useful as other ways to explain your form, and can cause unexpected technical issues with your content. See Labels and placeholders in : The Input (Form Input) element for more information.

Thuộc tính bổ sung

Ngoài các thuộc tính thường được hỗ trợ bởi tất cả các loại

<input type="text" inputmode="numeric" pattern="\d*" />
4, các đầu vào loại
<input type="text" inputmode="numeric" pattern="\d*" />
5 hỗ trợ các thuộc tính này.

Các giá trị của thuộc tính danh sách là

<input type="number" placeholder="Multiple of 10" />
7 của phần tử
<input type="number" placeholder="Multiple of 10" />
8 nằm trong cùng một tài liệu.
<input type="number" placeholder="Multiple of 10" />
8 cung cấp một danh sách các giá trị được xác định trước để đề xuất cho người dùng cho đầu vào này. Bất kỳ giá trị nào trong danh sách không tương thích với
<input type="number" placeholder="multiple of 10" step="10" />
0 không được bao gồm trong các tùy chọn được đề xuất. Các giá trị được cung cấp là các đề xuất, không phải yêu cầu: Người dùng có thể chọn từ danh sách được xác định trước này hoặc cung cấp một giá trị khác.
Because a read-only field cannot have a value,
<input type="number" placeholder="multiple of 10" step="10" min="0" max="100" />
6 does not have any effect on inputs with the
<label for="ticketNum">Number of tickets you would like to buy:</label>
<input id="ticketNum" type="number" name="ticketNum" value="0" />
5 attribute also specified.

<input type="number" placeholder="multiple of 10" step="10" min="0" max="100" /> 8

Giá trị tối đa để chấp nhận cho đầu vào này. Nếu

<label for="ticketNum">Number of tickets you would like to buy:</label>
<input id="ticketNum" type="number" name="ticketNum" value="0" />
7 nhập vào phần tử vượt quá điều này, phần tử sẽ không xác thực ràng buộc. Nếu giá trị của thuộc tính
<input type="number" placeholder="multiple of 10" step="10" />
1 không phải là một số, thì phần tử không có giá trị tối đa.

Giá trị này phải lớn hơn hoặc bằng giá trị của thuộc tính

<input type="number" placeholder="multiple of 10" step="10" />
4.

Giá trị tối thiểu để chấp nhận cho đầu vào này. Nếu

<label for="ticketNum">Number of tickets you would like to buy:</label>
<input id="ticketNum" type="number" name="ticketNum" value="0" />
7 của phần tử nhỏ hơn thế này, phần tử sẽ không xác thực ràng buộc. Nếu một giá trị được chỉ định cho
<input type="number" placeholder="multiple of 10" step="10" />
4 không phải là số hợp lệ, đầu vào không có giá trị tối thiểu.
When the data entered by the user doesn't adhere to the stepping configuration, the user agent may round to the nearest valid value, preferring numbers in the positive direction when there are two equally close options.

Giá trị này phải nhỏ hơn hoặc bằng giá trị của thuộc tính

<input type="number" placeholder="multiple of 10" step="10" />
1.

Thuộc tính <label for="ticketNum">Number of tickets you would like to buy:</label> <input id="ticketNum" type="number" name="ticketNum" value="0" /> 4 là một chuỗi cung cấp một gợi ý ngắn gọn cho người dùng về loại thông tin được mong đợi trong trường. Nó phải là một từ hoặc cụm từ ngắn thể hiện loại dữ liệu dự kiến, thay vì một thông điệp giải thích. Văn bản không được bao gồm trả lại vận chuyển hoặc nguồn cấp dữ liệu.

Nếu nội dung của điều khiển có một hướng (LTR hoặc RTL) nhưng cần trình bày trình giữ chỗ theo hướng ngược lại, bạn có thể sử dụng các ký tự định dạng thuật toán nhị phân Unicode để ghi đè tính định hướng trong trình giữ chỗ; Xem cách sử dụng các điều khiển Unicode cho văn bản BIDI để biết thêm thông tin.

<input type="text" inputmode="numeric" pattern="\d*" />

<input
  type="number"
  placeholder="x10"
  step="10"
  min="0"
  max="100"
  id="number" />
3 Các yếu tố có thể giúp đơn giản hóa công việc của bạn khi xây dựng giao diện người dùng và logic để nhập các số vào một biểu mẫu. Khi bạn tạo một số đầu vào với giá trị
<input type="number" placeholder="multiple of 10" step="10" />
0 thích hợp,
<input type="text" inputmode="numeric" pattern="\d*" />
5, bạn sẽ nhận được xác thực tự động rằng văn bản đã nhập là một số và thường là một tập hợp các nút lên xuống để bước lên và xuống giá trị.

CẢNH BÁO: Về mặt logic, bạn không thể nhập các ký tự bên trong một số nhập khác với các số. Một số trình duyệt cho phép các ký tự không hợp lệ, những người khác thì không; Xem Bug & NBSP; 1398528. Logically, you should not be able to enter characters inside a number input other than numbers. Some browsers allow invalid characters, others do not; see bug 1398528.

Lưu ý: Người dùng có thể sửa đổi HTML của bạn ở hậu trường, vì vậy trang web của bạn không được sử dụng xác thực phía máy khách đơn giản cho bất kỳ mục đích bảo mật nào. Bạn phải xác minh ở phía máy chủ bất kỳ giao dịch nào trong đó giá trị được cung cấp có thể có ý nghĩa bảo mật của bất kỳ loại nào. A user can tinker with your HTML behind the scenes, so your site must not use simple client-side validation for any security purposes. You must verify on the server side any transaction in which the provided value may have security implications of any kind.

Trình duyệt di động giúp đỡ thêm với trải nghiệm người dùng bằng cách hiển thị bàn phím đặc biệt phù hợp hơn để nhập các số khi người dùng cố gắng nhập giá trị.

Một số đầu vào đơn giản

Ở dạng cơ bản nhất, một đầu vào có thể được thực hiện như thế này:

<label for="ticketNum">Number of tickets you would like to buy:</label>
<input id="ticketNum" type="number" name="ticketNum" value="0" />

Một đầu vào số được coi là hợp lệ khi trống và khi một số được nhập, nhưng nếu không thì không hợp lệ. Nếu thuộc tính

<input type="number" placeholder="multiple of 10" step="10" min="0" max="100" />
6 được sử dụng, đầu vào không còn được coi là hợp lệ khi trống.

Người giữ chỗ

Đôi khi, thật hữu ích khi cung cấp một gợi ý trong bối cảnh về những gì hình thành dữ liệu đầu vào nên lấy. Điều này có thể đặc biệt quan trọng nếu thiết kế trang không cung cấp nhãn mô tả cho mỗi

<input type="text" inputmode="numeric" pattern="\d*" />
4. Đây là nơi giữ chỗ đến. Một trình giữ chỗ là một giá trị được sử dụng phổ biến nhất để cung cấp một gợi ý về định dạng mà đầu vào sẽ mất
<label for="ticketNum">Number of tickets you would like to buy:</label>
<input id="ticketNum" type="number" name="ticketNum" value="0" />
7. Nó được hiển thị bên trong hộp chỉnh sửa khi phần tử ____27 là
<input id="ticketNum" type="number" name="ticketNum" list="defaultNumbers" />
<span class="validity"></span>

<datalist id="defaultNumbers">
  <option value="10045678"></option>
  <option value="103421"></option>
  <option value="11111111"></option>
  <option value="12345678"></option>
  <option value="12999922"></option>
</datalist>
0. Khi dữ liệu được nhập vào hộp, người giữ chỗ sẽ biến mất; Nếu hộp được làm trống, người giữ chỗ sẽ xuất hiện trở lại.placeholders come in. A placeholder is a value most commonly used to provide a hint as to the format the input should take
<label for="ticketNum">Number of tickets you would like to buy:</label>
<input id="ticketNum" type="number" name="ticketNum" value="0" />
7. It is displayed inside the edit box when the element's
<label for="ticketNum">Number of tickets you would like to buy:</label>
<input id="ticketNum" type="number" name="ticketNum" value="0" />
7 is
<input id="ticketNum" type="number" name="ticketNum" list="defaultNumbers" />
<span class="validity"></span>

<datalist id="defaultNumbers">
  <option value="10045678"></option>
  <option value="103421"></option>
  <option value="11111111"></option>
  <option value="12345678"></option>
  <option value="12999922"></option>
</datalist>
0. Once data is entered into the box, the placeholder disappears; if the box is emptied, the placeholder reappears.

Ở đây, chúng tôi có đầu vào

<input type="text" inputmode="numeric" pattern="\d*" />
5 với trình giữ chỗ "
<input id="ticketNum" type="number" name="ticketNum" list="defaultNumbers" />
<span class="validity"></span>

<datalist id="defaultNumbers">
  <option value="10045678"></option>
  <option value="103421"></option>
  <option value="11111111"></option>
  <option value="12345678"></option>
  <option value="12999922"></option>
</datalist>
2". Lưu ý cách người giữ chỗ biến mất và xuất hiện lại khi bạn thao tác nội dung của trường chỉnh sửa.

<input type="number" placeholder="Multiple of 10" />

Kiểm soát kích thước bước

Theo mặc định, các nút lên và xuống được cung cấp cho bạn để bước số lên và xuống sẽ tăng giá trị lên và xuống 1. Bạn có thể thay đổi điều này bằng cách cung cấp thuộc tính

<input type="number" placeholder="multiple of 10" step="10" min="0" max="100" />
8, lấy giá trị của nó một số chỉ định số lượng bước. Ví dụ trên của chúng tôi chứa một trình giữ chỗ nói rằng giá trị phải là bội số của 10, do đó, việc thêm giá trị
<input type="number" placeholder="multiple of 10" step="10" min="0" max="100" />
8 là
<input id="ticketNum" type="number" name="ticketNum" list="defaultNumbers" />
<span class="validity"></span>

<datalist id="defaultNumbers">
  <option value="10045678"></option>
  <option value="103421"></option>
  <option value="11111111"></option>
  <option value="12345678"></option>
  <option value="12999922"></option>
</datalist>
5:

<input type="number" placeholder="multiple of 10" step="10" />

Trong ví dụ này, bạn nên thấy rằng các mũi tên bước lên và xuống sẽ tăng và giảm giá trị xuống 10 mỗi lần, chứ không phải 1. Bạn vẫn có thể nhập thủ công một số không phải là bội số của 10, nhưng nó sẽ được coi là không hợp lệ.

Chỉ định các giá trị tối thiểu và tối đa

Bạn có thể sử dụng các thuộc tính

<input type="number" placeholder="multiple of 10" step="10" />
4 và
<input type="number" placeholder="multiple of 10" step="10" />
1 để chỉ định giá trị tối thiểu và tối đa mà trường có thể có. Ví dụ: hãy đưa ra ví dụ của chúng tôi tối thiểu là
<input id="ticketNum" type="number" name="ticketNum" list="defaultNumbers" />
<span class="validity"></span>

<datalist id="defaultNumbers">
  <option value="10045678"></option>
  <option value="103421"></option>
  <option value="11111111"></option>
  <option value="12345678"></option>
  <option value="12999922"></option>
</datalist>
8 và tối đa là
<input id="ticketNum" type="number" name="ticketNum" list="defaultNumbers" />
<span class="validity"></span>

<datalist id="defaultNumbers">
  <option value="10045678"></option>
  <option value="103421"></option>
  <option value="11111111"></option>
  <option value="12345678"></option>
  <option value="12999922"></option>
</datalist>
9:

<input type="number" placeholder="multiple of 10" step="10" min="0" max="100" />

Trong phiên bản cập nhật này, bạn nên thấy rằng các nút bước lên và xuống sẽ không cho phép bạn đi dưới 0 hoặc trên 100. Bạn vẫn có thể nhập thủ công một số bên ngoài các giới hạn này, nhưng nó sẽ được coi là không hợp lệ.

Cho phép các giá trị thập phân

Một vấn đề với đầu vào số là kích thước bước của chúng là 1 theo mặc định. Nếu bạn cố gắng nhập một số với số thập phân (chẳng hạn như "1.0"), nó sẽ được coi là không hợp lệ. Nếu bạn muốn nhập một giá trị yêu cầu số thập phân, bạn sẽ cần phải phản ánh điều này trong giá trị

<input type="number" placeholder="multiple of 10" step="10" min="0" max="100" />
8 (ví dụ:
<form>
  <div>
    <label for="balloons">Number of balloons to order (multiples of 10):</label>
    <input
      id="balloons"
      type="number"
      name="balloons"
      step="10"
      min="0"
      max="100"
      required />
    <span class="validity"></span>
  </div>
  <div>
    <input type="submit" />
  </div>
</form>
1 để cho phép số thập phân đến hai vị trí thập phân). Đây là một ví dụ đơn giản:

<input type="number" placeholder="1.0" step="0.01" min="0" max="10" />

Xem ví dụ này cho phép bất kỳ giá trị nào giữa

<form>
  <div>
    <label for="balloons">Number of balloons to order (multiples of 10):</label>
    <input
      id="balloons"
      type="number"
      name="balloons"
      step="10"
      min="0"
      max="100"
      required />
    <span class="validity"></span>
  </div>
  <div>
    <input type="submit" />
  </div>
</form>
2 và
<form>
  <div>
    <label for="balloons">Number of balloons to order (multiples of 10):</label>
    <input
      id="balloons"
      type="number"
      name="balloons"
      step="10"
      min="0"
      max="100"
      required />
    <span class="validity"></span>
  </div>
  <div>
    <input type="submit" />
  </div>
</form>
3, với số thập phân đến hai nơi. Ví dụ: "9.52" là hợp lệ, nhưng "9.521" thì không.

Kiểm soát kích thước đầu vào

<input type="text" inputmode="numeric" pattern="\d*" />
4 Các yếu tố của loại
<input type="text" inputmode="numeric" pattern="\d*" />
5 không hỗ trợ các thuộc tính kích thước biểu mẫu như
<form>
  <div>
    <label for="balloons">Number of balloons to order (multiples of 10):</label>
    <input
      id="balloons"
      type="number"
      name="balloons"
      step="10"
      min="0"
      max="100"
      required />
    <span class="validity"></span>
  </div>
  <div>
    <input type="submit" />
  </div>
</form>
6. Bạn sẽ phải dùng đến CSS để thay đổi kích thước của các điều khiển này.

Ví dụ, để điều chỉnh chiều rộng của đầu vào chỉ rộng khi cần nhập số ba chữ số, chúng tôi có thể thay đổi HTML của mình để bao gồm

<input type="number" placeholder="Multiple of 10" />
7 và để rút ngắn chỗ giữ chỗ của chúng tôi vì trường sẽ quá hẹp cho văn bản Chúng tôi đã sử dụng cho đến nay:

<input
  type="number"
  placeholder="x10"
  step="10"
  min="0"
  max="100"
  id="number" />

Sau đó, chúng tôi thêm một số CSS để thu hẹp chiều rộng của phần tử với bộ chọn

<input type="number" placeholder="Multiple of 10" />
7
<form>
  <div>
    <label for="balloons">Number of balloons to order (multiples of 10):</label>
    <input
      id="balloons"
      type="number"
      name="balloons"
      step="10"
      min="0"
      max="100"
      required />
    <span class="validity"></span>
  </div>
  <div>
    <input type="submit" />
  </div>
</form>
9:

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

Cung cấp các giá trị đề xuất

Bạn có thể cung cấp một danh sách các tùy chọn mặc định mà người dùng có thể chọn bằng cách chỉ định thuộc tính

<label for="ticketNum">Number of tickets you would like to buy:</label>
<input id="ticketNum" type="number" name="ticketNum" value="0" />
3, chứa giá trị của nó là
<input type="number" placeholder="Multiple of 10" />
7 của
<input type="number" placeholder="Multiple of 10" />
8, từ đó chứa một phần tử
<input type="text" inputmode="numeric" pattern="\d*" />
03 cho mỗi giá trị được đề xuất. Mỗi ________ 104's
<label for="ticketNum">Number of tickets you would like to buy:</label>
<input id="ticketNum" type="number" name="ticketNum" value="0" />
7 là giá trị được đề xuất tương ứng cho hộp nhập số.

<input id="ticketNum" type="number" name="ticketNum" list="defaultNumbers" />
<span class="validity"></span>

<datalist id="defaultNumbers">
  <option value="10045678"></option>
  <option value="103421"></option>
  <option value="11111111"></option>
  <option value="12345678"></option>
  <option value="12999922"></option>
</datalist>

Thẩm định

Chúng tôi đã đề cập đến một số tính năng xác nhận của các đầu vào

<input type="text" inputmode="numeric" pattern="\d*" />
5, nhưng hãy xem xét chúng ngay bây giờ:

  • <input
      type="number"
      placeholder="x10"
      step="10"
      min="0"
      max="100"
      id="number" />
    
    3 Các yếu tố tự động vô hiệu hóa bất kỳ mục nào không phải là số (hoặc trống, trừ khi
    <input type="number" placeholder="multiple of 10" step="10" min="0" max="100" />
    
    6 được chỉ định).
  • Bạn có thể sử dụng thuộc tính
    <input type="number" placeholder="multiple of 10" step="10" min="0" max="100" />
    
    6 để làm cho một mục trống không hợp lệ. (Nói cách khác, đầu vào phải được điền vào.)
  • Bạn có thể sử dụng thuộc tính
    <input type="number" placeholder="multiple of 10" step="10" min="0" max="100" />
    
    8 để ràng buộc các giá trị hợp lệ vào một tập hợp nhất định (ví dụ: bội số của 10).
  • Bạn có thể sử dụng các thuộc tính
    <input type="number" placeholder="multiple of 10" step="10" />
    
    4 và
    <input type="number" placeholder="multiple of 10" step="10" />
    
    1 để hạn chế các giá trị hợp lệ với giới hạn dưới và trên.

Ví dụ sau đây thể hiện tất cả các tính năng trên, cũng như sử dụng một số CSS để hiển thị các biểu tượng hợp lệ và không hợp lệ, tùy thuộc vào giá trị của ____ 21:

<form>
  <div>
    <label for="balloons">Number of balloons to order (multiples of 10):</label>
    <input
      id="balloons"
      type="number"
      name="balloons"
      step="10"
      min="0"
      max="100"
      required />
    <span class="validity"></span>
  </div>
  <div>
    <input type="submit" />
  </div>
</form>

Hãy thử gửi biểu mẫu với các giá trị không hợp lệ khác nhau được nhập - ví dụ: không có giá trị; giá trị dưới 0 hoặc trên 100; một giá trị không phải là bội số của 10; hoặc một giá trị phi hình số-và xem cách các thông báo lỗi mà trình duyệt cung cấp cho bạn khác nhau với các thông báo khác nhau.

CSS áp dụng cho ví dụ này như sau:

<input type="text" inputmode="numeric" pattern="\d*" />
0

Ở đây chúng tôi sử dụng các lớp giả

<input type="text" inputmode="numeric" pattern="\d*" />
14 và
<input type="text" inputmode="numeric" pattern="\d*" />
15 để hiển thị một biểu tượng hợp lệ hoặc hợp lệ thích hợp dưới dạng nội dung được tạo trên phần tử
<input type="text" inputmode="numeric" pattern="\d*" />
16 liền kề, như một chỉ báo trực quan về tính hợp lệ.

Chúng tôi đặt nó trên một phần tử

<input type="text" inputmode="numeric" pattern="\d*" />
16 riêng để tăng tính linh hoạt. Một số trình duyệt không hiển thị nội dung được tạo rất hiệu quả trên một số loại đầu vào hình thức. (Đọc, ví dụ, phần về xác thực
<input type="text" inputmode="numeric" pattern="\d*" />
18.)

Cảnh báo: Xác thực biểu mẫu HTML không phải là một thay thế cho các tập lệnh phía máy chủ đảm bảo rằng dữ liệu đã nhập ở định dạng thích hợp! HTML form validation is not a substitute for server-side scripts that ensure that the entered data is in the proper format!

Thật dễ dàng để ai đó thực hiện các điều chỉnh cho HTML cho phép họ bỏ qua việc xác thực hoặc loại bỏ nó hoàn toàn. Ai đó cũng có thể bỏ qua HTML của bạn và gửi dữ liệu trực tiếp đến máy chủ của bạn.

Nếu mã phía máy chủ của bạn không xác thực dữ liệu mà nó nhận được, thảm họa có thể tấn công khi dữ liệu được định dạng không đúng cách được gửi (hoặc dữ liệu quá lớn, là loại sai, v.v.).

Xác thực mẫu

Các yếu tố

<input
  type="number"
  placeholder="x10"
  step="10"
  min="0"
  max="100"
  id="number" />
3 không hỗ trợ việc sử dụng thuộc tính
<input type="text" inputmode="numeric" pattern="\d*" />
20 để làm cho các giá trị đã nhập phù hợp với một mẫu Regex cụ thể.

Lý do cho điều này là các đầu vào số sẽ không hợp lệ nếu chúng chứa bất cứ thứ gì ngoại trừ các số và bạn có thể hạn chế số chữ số hợp lệ tối thiểu và tối đa bằng cách sử dụng các thuộc tính

<input type="number" placeholder="multiple of 10" step="10" />
4 và
<input type="number" placeholder="multiple of 10" step="10" />
1 (như được giải thích ở trên).

Ví dụ

Chúng tôi đã đề cập đến thực tế là theo mặc định, mức tăng là

<input type="number" placeholder="1.0" step="0.01" min="0" max="10" />
7 và bạn có thể sử dụng thuộc tính
<input type="number" placeholder="multiple of 10" step="10" min="0" max="100" />
8 để cho phép đầu vào thập phân. Hãy xem xét kỹ hơn.

Trong ví dụ sau là một hình thức để nhập chiều cao của người dùng. Nó mặc định chấp nhận chiều cao tính bằng mét, nhưng bạn có thể nhấp vào nút liên quan để thay đổi biểu mẫu để chấp nhận chân và inch thay thế. Đầu vào cho chiều cao tính bằng mét chấp nhận số thập phân đến hai nơi.

HTML trông như thế này:

<input type="text" inputmode="numeric" pattern="\d*" />
1

Bạn sẽ thấy rằng chúng tôi đang sử dụng nhiều thuộc tính mà chúng tôi đã xem trong bài viết trước đó. Vì chúng tôi muốn chấp nhận giá trị đồng hồ tính theo centimet, chúng tôi đã đặt giá trị

<input type="number" placeholder="multiple of 10" step="10" min="0" max="100" />
8 thành
<input type="text" inputmode="numeric" pattern="\d*" />
26, do đó các giá trị như 1.78 không được coi là không hợp lệ. Chúng tôi cũng đã cung cấp một trình giữ chỗ cho đầu vào đó.

Chúng tôi đã ẩn đầu vào chân và inch ban đầu bằng cách sử dụng

<input type="text" inputmode="numeric" pattern="\d*" />
27, do đó đồng hồ đo là loại nhập mặc định.

Bây giờ, vào CSS. Điều này trông rất giống với kiểu dáng xác nhận mà chúng ta đã thấy trước đây; Không có gì đáng chú ý ở đây.

<input type="text" inputmode="numeric" pattern="\d*" />
2

Và cuối cùng, JavaScript:

<input type="text" inputmode="numeric" pattern="\d*" />
3

Sau khi khai báo một vài biến, người nghe sự kiện được thêm vào

<input type="text" inputmode="numeric" pattern="\d*" />
28 để kiểm soát cơ chế chuyển đổi. Điều này khá đơn giản, chủ yếu liên quan đến việc thay đổi trên nút
<input type="text" inputmode="numeric" pattern="\d*" />
29 và
<input type="text" inputmode="numeric" pattern="\d*" />
30 và cập nhật các giá trị hiển thị của hai bộ đầu vào khi nhấn nút.

(Lưu ý rằng chúng tôi không chuyển đổi qua lại giữa mét và feet/inch ở đây, mà một ứng dụng web ngoài đời thực có thể sẽ làm.)

Lưu ý: Khi người dùng nhấp vào nút, (các) thuộc tính

<input type="number" placeholder="multiple of 10" step="10" min="0" max="100" />
6 sẽ bị xóa khỏi (các) đầu vào, chúng tôi đang ẩn và làm trống (các) thuộc tính
<label for="ticketNum">Number of tickets you would like to buy:</label>
<input id="ticketNum" type="number" name="ticketNum" value="0" />
7. Điều này là do đó biểu mẫu có thể được gửi nếu cả hai bộ đầu vào không được điền vào. Nó cũng đảm bảo rằng biểu mẫu sẽ không gửi dữ liệu mà người dùng không có ý.
When the user clicks the button, the
<input type="number" placeholder="multiple of 10" step="10" min="0" max="100" />
6 attribute(s) are removed from the input(s) we are hiding, and empty the
<label for="ticketNum">Number of tickets you would like to buy:</label>
<input id="ticketNum" type="number" name="ticketNum" value="0" />
7 attribute(s). This is so the form can be submitted if both input sets aren't filled in. It also ensures that the form won't submit data that the user didn't mean to.

Nếu bạn không làm điều này, bạn sẽ phải điền vào cả hai feet/inch và mét để gửi biểu mẫu!and meters to submit the form!

Khả năng tiếp cận

Vai trò ngầm cho phần tử

<input
  type="number"
  placeholder="x10"
  step="10"
  min="0"
  max="100"
  id="number" />
3 là
<input type="text" inputmode="numeric" pattern="\d*" />
34. Nếu spinbutton không phải là một tính năng quan trọng để kiểm soát biểu mẫu của bạn, hãy xem xét không sử dụng
<input type="text" inputmode="numeric" pattern="\d*" />
35. Thay vào đó, hãy sử dụng
<input type="text" inputmode="numeric" pattern="\d*" />
36 cùng với thuộc tính
<input type="text" inputmode="numeric" pattern="\d*" />
20 giới hạn các ký tự ở số và các ký tự liên quan. Với
<input
  type="number"
  placeholder="x10"
  step="10"
  min="0"
  max="100"
  id="number" />
3, có nguy cơ người dùng vô tình tăng số khi họ đang cố gắng làm việc khác. Ngoài ra, nếu người dùng cố gắng nhập thứ gì đó không phải là số, không có phản hồi rõ ràng về những gì họ đang làm sai.

Đồng thời xem xét sử dụng thuộc tính

<label for="ticketNum">Number of tickets you would like to buy:</label>
<input id="ticketNum" type="number" name="ticketNum" value="0" />
2 để giúp người dùng hoàn thành các biểu mẫu nhanh hơn và với ít cơ hội lỗi hơn.Ví dụ: để bật tự động vào trường mã zip, đặt
<input type="text" inputmode="numeric" pattern="\d*" />
40.

Thông số kỹ thuật

Sự chỉ rõ
HTML Tiêu chuẩn # Number-State- (Type = Number)
# number-state-(type=number)

Tính tương thích của trình duyệt web

Bảng BCD chỉ tải trong trình duyệt

Xem thêm