HTML 5
Bạn có thể sử dụng số loại đầu vào HTML5 để chỉ hạn chế các mục nhập số:
<input type="number" name="someid" />
Điều này sẽ chỉ hoạt động trong trình duyệt khiếu nại HTML5. Hãy chắc chắn rằng loại tài liệu html của bạn là:
<!DOCTYPE html>
Xem thêm https://github.com/jonstipe/number-polyfill để được hỗ trợ minh bạch trong các trình duyệt cũ hơn.
JavaScript
Cập nhật: Có một giải pháp mới và rất đơn giản cho việc này:
Nó cho phép bạn sử dụng bất kỳ loại bộ lọc đầu vào nào trên một văn bản <input>
, bao gồm các bộ lọc số khác nhau. Điều này sẽ xử lý chính xác Sao chép + Dán, Kéo + Thả, phím tắt, thao tác menu ngữ cảnh, các phím không thể gõ và tất cả các bố cục bàn phím.
Xem câu trả lời này hoặc tự mình thử nó trên JSFiddle .
Đối với mục đích chung, bạn có thể có xác thực JS như dưới đây:
function isNumberKey(evt){
var charCode = (evt.which) ? evt.which : evt.keyCode
if (charCode > 31 && (charCode < 48 || charCode > 57))
return false;
return true;
}
<input name="someid" type="number" onkeypress="return isNumberKey(event)"/>
Nếu bạn muốn cho phép số thập phân thay thế "if condition" bằng điều này:
if (charCode > 31 && (charCode != 46 &&(charCode < 48 || charCode > 57)))
Nguồn: Nhập văn bản HTML chỉ cho phép nhập số
Bản demo của JSFiddle: http://jsfiddle.net/viruspatel/nSjy7/