Làm cách nào để hạn chế trường nhập thành số trong JavaScript?

Trong HTML, thẻ đầu vào có thể được đặt thành chỉ nhận các đầu vào số bằng cách đặt thuộc tính loại của nó thành số hoặc thành số điện thoại. Tuy nhiên, thực hiện nó thông qua JavaScript sẽ hơi phức tạp một chút

Bước 1. Tài liệu HTML

Tạo tệp HTML và trong tệp đó, thiết lập trường nhập và một số văn bản yêu cầu người dùng nhập dữ liệu vào trường văn bản với sự trợ giúp của các dòng sau

< trung tâm >

< b > Nhập số tại đây b>

< br />

< loại đầu vào ="văn bản" khi nhấn phím< ="return checkNumber(event)" />

trung tâm>center>

Trong những dòng này

  • Thuộc tính onkeypress của thẻ đầu vào đã được đặt thành giá trị trả về của phương thức checkNumber()
  • Thuộc tính onkeypress được thực thi trên một sự kiện cụ thể đang xảy ra và sự kiện này xảy ra là một lần nhấn phím, vì vậy hãy chuyển sự kiện bên trong phương thức checkNumber()

Chạy trang web HTML bây giờ sẽ cho kết quả như sau trên trình duyệt

Làm cách nào để hạn chế trường nhập thành số trong JavaScript?

Hiện tại, tất cả các loại ký tự có thể được viết bên trong trường văn bản này

Làm cách nào để hạn chế trường nhập thành số trong JavaScript?

Nhưng điều này sẽ thay đổi trong phần tiếp theo

Bước 2. Thiết lập mã JavaScript

In the JavaScript file or in the

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*" />
5, đầu vào của loại
<input type="text" inputmode="numeric" pattern="\d*" />
6 hỗ trợ các thuộc tính này

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

<label for="ticketNum">Number of tickets you would like to buy:label>
<input id="ticketNum" type="number" name="ticketNum" value="0" />
4 của một phần tử
<label for="ticketNum">Number of tickets you would like to buy:label>
<input id="ticketNum" type="number" name="ticketNum" value="0" />
5 nằm trong cùng một tài liệu.
<label for="ticketNum">Number of tickets you would like to buy:label>
<input id="ticketNum" type="number" name="ticketNum" value="0" />
5 cung cấp một danh sách các giá trị được xác định trước để gợi ý cho người dùng về thông tin đầu vào này. Bất kỳ giá trị nào trong danh sách không tương thích với 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à đề 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

Giá trị tối đa để chấp nhận cho đầu vào này. Nếu giá trị nhập vào phần tử vượt quá giá trị này, thì phần tử không xác thực được ràng buộc. Nếu giá trị của 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" />
8 không phải là số thì phần tử không có giá trị lớn nhất

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" />
1

Giá trị tối thiểu để chấp nhận cho đầu vào này. Nếu giá trị của phần tử nhỏ hơn giá trị này, thì phần tử không xác thực được ràng buộc. Nếu một giá trị được chỉ định cho

<input type="number" placeholder="Multiple of 10" />
1 không phải là một số hợp lệ, đầu vào không có giá trị nhỏ nhất

Giá trị này phải nhỏ hơn hoặc bằng giá trị của 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" />
8

Thuộc tính

<input type="number" placeholder="Multiple of 10" />
6 là một chuỗi cung cấp 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, chứ không phải là một thông báo giải thích. Văn bản không được bao gồm dấu xuống dòng hoặc xuống dòng

Nếu nội dung của điều khiển có một hướng (LTR hoặc RTL) nhưng cần hiển thị 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 hai chiều Unicode để ghi đè hướng trong trình giữ chỗ;

Ghi chú. Tránh sử dụng thuộc tính

<input type="number" placeholder="Multiple of 10" />
6 nếu bạn có thể. Nó không hữu ích về mặt ngữ nghĩa như các cách khác để giải thích biểu mẫu của bạn và có thể gây ra sự cố kỹ thuật không mong muốn với nội dung của bạn. Xem để biết thêm thông tin

Thuộc tính Boolean, nếu có, nghĩa là người dùng không thể chỉnh sửa trường này. Tuy nhiên,

<label for="ticketNum">Number of tickets you would like to buy:label>
<input id="ticketNum" type="number" name="ticketNum" value="0" />
0 của nó vẫn có thể được thay đổi bằng mã JavaScript trực tiếp đặt thuộc tính
<input type="number" placeholder="multiple of 10" step="10" />
2
<label for="ticketNum">Number of tickets you would like to buy:label>
<input id="ticketNum" type="number" name="ticketNum" value="0" />
0

Ghi chú. Vì trường chỉ đọc không thể có giá trị, nên

<input type="number" placeholder="multiple of 10" step="10" />
4 không có bất kỳ ảnh hưởng nào đối với đầu vào với thuộc tính
<input type="number" placeholder="multiple of 10" step="10" />
0 cũng được chỉ định

Thuộc tính

<input type="number" placeholder="multiple of 10" step="10" />
6 là một số chỉ định mức độ chi tiết mà giá trị phải tuân theo hoặc giá trị đặc biệt
<input type="number" placeholder="multiple of 10" step="10" />
8, được mô tả bên dưới. Chỉ các giá trị bằng với cơ sở để bước (nếu được chỉ định, ngược lại và giá trị mặc định phù hợp nếu không có giá trị nào được cung cấp) mới hợp lệ

Giá trị chuỗi là

<input type="number" placeholder="multiple of 10" step="10" />
8 có nghĩa là không có bước nào được ngụ ý và mọi giá trị đều được phép (không bao gồm các ràng buộc khác, chẳng hạn như và )

Ghi chú. Khi dữ liệu do người dùng nhập không tuân theo cấu hình từng bước, tác nhân người dùng có thể làm tròn đến giá trị hợp lệ gần nhất, ưu tiên các số theo hướng dương khi có hai tùy chọn gần bằng nhau

Giá trị bước mặc định cho đầu vào

<input type="text" inputmode="numeric" pattern="\d*" />
6 là
<input type="number" placeholder="multiple of 10" step="10" min="0" max="100" />
5, chỉ cho phép nhập số nguyên—trừ khi cơ sở bước không phải là số nguyên

Loại đầu vào

<input type="text" inputmode="numeric" pattern="\d*" />
6 chỉ nên được sử dụng cho các số gia tăng, đặc biệt khi việc tăng và giảm nút xoay hữu ích cho trải nghiệm người dùng. Loại đầu vào
<input type="text" inputmode="numeric" pattern="\d*" />
6 không phù hợp với các giá trị chỉ bao gồm các số nhưng không nói đúng ra là một số, chẳng hạn như mã bưu chính ở nhiều quốc gia hoặc số thẻ tín dụng. Đối với các đầu vào không phải là số, hãy xem xét sử dụng loại đầu vào khác, chẳng hạn như
<input type="number" placeholder="multiple of 10" step="10" min="0" max="100" />
8 hoặc loại
<input type="text" inputmode="numeric" pattern="\d*" />
5 khác với thuộc tính

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

Các yếu tố

<input type="number" placeholder="1.0" step="0.01" min="0" max="10" />
1 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 số vào biểu mẫu. Khi bạn tạo đầu vào số với giá trị
<label for="ticketNum">Number of tickets you would like to buy:label>
<input id="ticketNum" type="number" name="ticketNum" value="0" />
7 thích hợp,
<input type="text" inputmode="numeric" pattern="\d*" />
6, 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 và xuống để tăng và giảm giá trị

Cảnh báo. Về mặt logic, bạn sẽ không thể nhập các ký tự bên trong một đầu vào số không phải là số. Một số trình duyệt cho phép các ký tự không hợp lệ, một số khác thì không;

Ghi chú. Người dùng có thể sửa lạ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 dưới bất kỳ hình thức nào

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

Ở dạng cơ bản nhất, một đầu vào số có thể được triển khai như thế này

________số 8_______

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

Ghi chú. Bất kỳ số nào cũng là một giá trị có thể chấp nhận được, miễn là nó là một (nghĩa là không phải NaN hoặc Infinity)

Đôi khi, thật hữu ích khi đưa ra gợi ý trong ngữ cảnh về dạng dữ liệu đầu vào sẽ có. Đ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*" />
5. Đây là nơi giữ chỗ đến. Trình giữ chỗ là một giá trị được sử dụng phổ biến nhất để cung cấp gợi ý về định dạng mà đầu vào sẽ sử dụng
<label for="ticketNum">Number of tickets you would like to buy:label>
<input id="ticketNum" type="number" name="ticketNum" value="0" />
0. Nó được hiển thị bên trong hộp chỉnh sửa khi
<label for="ticketNum">Number of tickets you would like to buy:label>
<input id="ticketNum" type="number" name="ticketNum" value="0" />
0 của phần tử là
<input type="number" placeholder="1.0" step="0.01" min="0" max="10" />
8. Khi dữ liệu được nhập vào hộp, trình giữ chỗ sẽ biến mất;

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

<input type="text" inputmode="numeric" pattern="\d*" />
6 với phần giữ chỗ "
<input
  type="number"
  placeholder="x10"
  step="10"
  min="0"
  max="100"
  id="number" />
0". Lưu ý cách trình giữ chỗ biến mất và xuất hiện lại khi bạn thao tác với nội dung của trường chỉnh sửa

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

Theo mặc định, các nút lên và xuống được cung cấp để bạn bước số lên và xuống sẽ bước 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 một thuộc tính, thuộc tính này nhận giá trị của nó là một số chỉ định số 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, vì vậy sẽ hợp lý khi thêm giá trị

<input type="number" placeholder="multiple of 10" step="10" />
6 của
<input
  type="number"
  placeholder="x10"
  step="10"
  min="0"
  max="100"
  id="number" />
3

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

Trong ví dụ này, bạn sẽ 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ị 10 lần 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 số đó sẽ bị coi là không hợp lệ

Bạn có thể sử dụng các thuộc tính và để chỉ định giá trị tối thiểu và tối đa mà trường có thể có. Ví dụ: hãy cho ví dụ của chúng ta tối thiểu là

<input
  type="number"
  placeholder="x10"
  step="10"
  min="0"
  max="100"
  id="number" />
6 và tối đa là
<input
  type="number"
  placeholder="x10"
  step="10"
  min="0"
  max="100"
  id="number" />
7

<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 sẽ thấy rằng các nút bước lên và xuống sẽ không cho phép bạn xuống dưới 0 hoặc trên 100. Bạn vẫn có thể nhập số ngoài các giới hạn này theo cách thủ công, nhưng số đó sẽ bị coi là không hợp lệ

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ố có phần thập phân (chẳng hạn như "1. 0"), nó sẽ bị 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 cần phản ánh điều này trong giá trị

<input type="number" placeholder="multiple of 10" step="10" />
6 (e. g.
<input
  type="number"
  placeholder="x10"
  step="10"
  min="0"
  max="100"
  id="number" />
9 để cho phép lấy số thập phân đến hai chữ số 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

#number {
  width: 3em;
}
0 và
#number {
  width: 3em;
}
1, với số thập phân đến hai vị trí. Ví dụ: "9. 52" là hợp lệ, nhưng "9. 521" không phải

Các phần tử

<input type="text" inputmode="numeric" pattern="\d*" />
5 thuộc loại
<input type="text" inputmode="numeric" pattern="\d*" />
6 không hỗ trợ các thuộc tính định cỡ biểu mẫu, chẳng hạn như. Bạn sẽ phải sử dụng CSS để thay đổi kích thước của các điều khiển này

Ví dụ: để điều chỉnh độ rộng của đầu vào chỉ rộng bằng mức cần thiết để nhập một số có ba chữ số, chúng ta có thể thay đổi HTML của mình để bao gồm một và để rút ngắn trình giữ chỗ vì trường sẽ quá hẹp đối với văn bản mà chúng ta

<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ử bằng bộ chọn

<label for="ticketNum">Number of tickets you would like to buy:label>
<input id="ticketNum" type="number" name="ticketNum" value="0" />
4
#number {
  width: 3em;
}
7

#number {
  width: 3em;
}

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

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, thuộc tính chứa giá trị của nó là

<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 này lại chứa một phần tử
<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>
1 cho mỗi giá trị được đề xuất. Mỗi
<label for="ticketNum">Number of tickets you would like to buy:label>
<input id="ticketNum" type="number" name="ticketNum" value="0" />
0 của
<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à giá trị gợi ý tương ứng cho ô 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>

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

<input type="text" inputmode="numeric" pattern="\d*" />
6, nhưng bây giờ hãy xem lại chúng

  • Các phần tử
    <input type="number" placeholder="1.0" step="0.01" min="0" max="10" />
    
    1 tự động vô hiệu hóa bất kỳ mục nhập nào không phải là số (hoặc trống, trừ khi chỉ định rõ _____18_______4)
  • Bạn có thể sử dụng thuộc tính để làm cho mục nhập 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 để ràng buộc các giá trị hợp lệ với một tập hợp các bước nhất định (e. g. , bội số của 10)
  • Bạn có thể sử dụng các thuộc tính và để hạn chế các giá trị hợp lệ ở giới hạn trên và dưới

Ví dụ sau 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

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

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

Hãy thử gửi biểu mẫu với các giá trị không hợp lệ khác được nhập — e. g. , không có giá trị;

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

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

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

<input type="text" inputmode="numeric" pattern="\d*" />
02 và
<input type="text" inputmode="numeric" pattern="\d*" />
03 để hiển thị một biểu tượng hợp lệ hoặc không 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*" />
04 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*" />
04 riêng biệt để 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 biểu mẫu. (Đọc, ví dụ, phần trên. )

Cảnh báo. Xác thực biểu mẫu HTML không 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 phù hợp

Quá dễ dàng để ai đó thực hiện các điều chỉnh đối với HTML cho phép họ bỏ qua xác thực hoặc xóa hoàn toàn. Cũng có thể ai đó 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 được dữ liệu mà nó nhận được, thảm họa có thể xảy ra khi dữ liệu được định dạng không đúng (hoặc dữ liệu quá lớn, không đúng loại, v.v.)

Các phần tử

<input type="number" placeholder="1.0" step="0.01" min="0" max="10" />
1 không hỗ trợ sử dụng thuộc tính để làm cho các giá trị đã nhập tuân theo một mẫu biểu thức chính quy cụ thể

Cơ sở lý luận cho điều này là đầu vào số sẽ không hợp lệ nếu chúng chứa bất kỳ thứ gì ngoại trừ số và bạn có thể hạn chế số lượng chữ số hợp lệ tối thiểu và tối đa bằng cách sử dụng thuộc tính và (như đã giải thích ở trên)

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

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

Trong ví dụ sau đây là một biểu mẫu để 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 có liên quan để thay đổi biểu mẫu để chấp nhận feet 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 vị trí

HTML trông như thế này

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

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 xét trong bài viết trước đó. Vì chúng tôi muốn chấp nhận giá trị mét tính bằng centimet, nên chúng tôi đã đặt giá trị

<input type="number" placeholder="multiple of 10" step="10" />
6 thành
<input type="text" inputmode="numeric" pattern="\d*" />
14, để 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 trình giữ chỗ cho đầu vào đó

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

<input type="text" inputmode="numeric" pattern="\d*" />
15, để mét là loại mục 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 xác thực mà chúng ta đã thấy trước đây;

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

Và cuối cùng, JavaScript

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

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

<input type="text" inputmode="numeric" pattern="\d*" />
16 để điều khiển cơ chế chuyển đổi. Điều này khá đơn giản, chủ yếu liên quan đến việc thay đổi
<input type="text" inputmode="numeric" pattern="\d*" />
17 và
<input type="text" inputmode="numeric" pattern="\d*" />
18 của nút và cập nhật 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, điều mà một ứng dụng web thực tế có thể sẽ làm. )

Ghi chú. 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" />
4 sẽ bị xóa khỏi (các) đầu vào mà 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" />
0. Điều này là để 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ố ý

Nếu bạn không làm điều này, bạn phải điền cả feet/inch và mét để gửi biểu mẫu

Vai trò ẩn của phần tử

<input type="number" placeholder="1.0" step="0.01" min="0" max="10" />
1 là
<input type="text" inputmode="numeric" pattern="\d*" />
22. 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 cân nhắc việc không sử dụng
<input type="text" inputmode="numeric" pattern="\d*" />
23. Thay vào đó, hãy sử dụng
<input type="text" inputmode="numeric" pattern="\d*" />
24 cùng với thuộc tính
<input type="text" inputmode="numeric" pattern="\d*" />
08 giới hạn các ký tự thành số và các ký tự liên quan. Với
<input type="number" placeholder="1.0" step="0.01" min="0" max="10" />
1, 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ố, sẽ không có phản hồi rõ ràng về những gì họ đang làm sai

Ngoài ra, hãy cân nhắc sử dụng thuộc tính

<input type="text" inputmode="numeric" pattern="\d*" />
27 để giúp người dùng hoàn thành biểu mẫu nhanh hơn và ít mắc lỗi hơn. Ví dụ: để bật tự động điền trên trường mã zip, hãy đặt
<input type="text" inputmode="numeric" pattern="\d*" />
28