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 Show Bước 1. Tài liệu HTMLTạ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 > Trong những dòng này
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ã JavaScriptIn 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 5, đầu vào của loại 6 hỗ trợ các thuộc tính nàyCác giá trị của thuộc tính danh sách là 4 của một phần tử 5 nằm trong cùng một tài liệu. 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ácGiá 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 8 không phải là số thì phần tử không có giá trị lớn nhấtGiá trị này phải lớn hơn hoặc bằng giá trị của thuộc tính 1Giá 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ấtGiá trị này phải nhỏ hơn hoặc bằng giá trị của thuộc tính 8Thuộ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òngNế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 tinThuộ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, 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 0Ghi 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ỉ địnhThuộ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ênLoạ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ị 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 0. Nó được hiển thị bên trong hộp chỉnh sửa khi 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 0 và 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ảiCá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àyVí 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 4 7
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à 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 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
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 0Hã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ơnTrong 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 2Bạ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 địnhBâ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; 3Và cuối cùng, JavaScript 4Sau 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 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 saiNgoà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 |