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



Nhập số tại đây





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

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

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 tag, start by creating the function named as checkNumber[]:

Số kiểm tra chức năng [ sự kiện ] {

// Các dòng tiếp theo đến bên trong đây

}

Bên trong hàm này, việc đầu tiên là lấy mã ASCII của phím bấm bằng cách sử dụng biến “sự kiện”

var aCode = . sự kiện nào ? . . sự kiện. mã khóa;

Sau đó, nếu mã ASCII không phải là số, thì trả về false cho trường nhập nếu không thì trả về true

if [ aCode > 31 && [aCode 57]] return false;

return true;

Đoạn mã hoàn chỉnh sẽ là

Số kiểm tra chức năng [ sự kiện ] {

var aCode = . sự kiện nào ? . . sự kiện. mã khóa;

if [ aCode > 31 && [aCode 57]] return false;

return true;

}

Như vậy là bạn đã hoàn tất việc thiết lập phần JavaScript

Bước 3. Kiểm tra trường đầu vào

Sau khi bạn hoàn thành bước 1 và bước 2, chỉ cần thực thi tài liệu HTML và thử đặt các giá trị bên trong trường đầu vào và quan sát hành vi của nó

Nó hiện chỉ cho phép viết số bên trong nó và bỏ qua các ký tự khác

Phần kết luận

Để hạn chế người dùng chỉ nhập các ký tự số bên trong đầu vào bằng JavaScript. Sau đó, trong trường hợp đó, hãy gọi một hàm trên mọi phím được nhấn bên trong trường nhập đó và trong hàm này, hãy so sánh mã ASCII của phím được nhấn với mã ASCII của các giá trị số. Dựa trên sự so sánh này, hãy cho phép nhập các phím bên trong trường nhập liệu


5 phần tử kiểu

6 được sử dụng để cho phép người dùng nhập một số. Chúng bao gồm xác thực tích hợp để từ chối các mục nhập không phải là số

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

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


6, đầu vào

6 sẽ chuyển về loại

9

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, như vậy


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


5, đầu vào của loại

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à

Number of tickets you would like to buy:

4 của một phần tử
Number of tickets you would like to buy:

5 nằm trong cùng một tài liệu.
Number of tickets you would like to buy:

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

Number of tickets you would like to buy:

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


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


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

Number of tickets you would like to buy:

8

Thuộc tính


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


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,

Number of tickets you would like to buy:

0 của nó vẫn có thể được thay đổi bằng mã JavaScript trực tiếp đặt thuộc tính

2
Number of tickets you would like to buy:

0

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


4 không có bất kỳ ảnh hưởng nào đối với đầu vào với thuộc tính

0 cũng được chỉ định

Thuộc tính


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

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à


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


6 là

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


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

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ư

8 hoặc loại

5 khác với thuộc tính


Các yếu tố


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ị
Number of tickets you would like to buy:

7 thích hợp,

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


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
Number of tickets you would like to buy:

0. Nó được hiển thị bên trong hộp chỉnh sửa khi
Number of tickets you would like to buy:

0 của phần tử là

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


6 với phần giữ chỗ "

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


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ị


6 của

3


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à


6 và tối đa là

7


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ị


6 [e. g.

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


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ử


5 thuộc loại

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


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

Number of tickets you would like to buy:

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à

Number of tickets you would like to buy:

5, thuộc tính này lại chứa một phần tử




  
  
  
  
  

1 cho mỗi giá trị được đề xuất. Mỗi
Number of tickets you would like to buy:

0 của




  
  
  
  
  

2 là giá trị gợi ý tương ứng cho ô nhập số





  
  
  
  
  

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


6, nhưng bây giờ hãy xem lại chúng

  • Các phần tử
    
    
    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


01


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


1

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


02 và

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ử

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ử


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ử


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à


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


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ị


6 thành

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


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;


3

Và cuối cùng, JavaScript


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


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

17 và

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


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
Number of tickets you would like to buy:

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ử


1 là

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

23. Thay vào đó, hãy sử dụng

24 cùng với thuộc tính

08 giới hạn các ký tự thành số và các ký tự liên quan. Với

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


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

28

Chủ Đề