Làm cách nào để hạn chế đầu vào html thành các giá trị số?

Ok, đây là một cách khá cơ bản - làm thế nào để buộc một hộp văn bản chỉ chấp nhận đầu vào số. Ai đó đã hỏi tôi điều này hôm nay trong một cuộc gọi hỗ trợ, vì vậy tôi đã thực hiện một số tra cứu nhanh trên mạng và thấy các giải pháp được liệt kê khá không hài lòng. Vấn đề chính với hầu hết các ví dụ mà tôi có thể khai thác được là chúng chỉ bao gồm các giá trị số, nhưng điều đó mang lại trải nghiệm người dùng khá khập khiễng. Bạn vẫn cần cho phép các phím thao tác cơ bản cho hộp văn bản – phím điều hướng, xóa lùi và xóa, tab/shift tab và phím Enter – để hoạt động, nếu không, hộp văn bản sẽ có cảm giác rất khác so với hộp văn bản tiêu chuẩn

Có, có những phần bổ trợ cho phép đầu vào được che dấu đủ dễ dàng nhưng hầu hết đều có chiều rộng cố định, điều này khó thực hiện với đầu vào số đơn giản. Vì vậy, tôi đã dành vài phút để viết một plug-in nhỏ có thể tái sử dụng để xử lý tình huống này. Hãy tưởng tượng bạn có một vài hộp văn bản trên một biểu mẫu như thế này

Enter a number:
Enter a number:

và bạn muốn hạn chế nhập vào các số. Đây là một nhỏ. buộc plugin Numeric() jQuery thực hiện những gì tôi muốn thấy trong trường hợp này

Đã cập nhật nhờ Elijah Manor về một vài điều chỉnh nhỏ để có thêm các phím cần kiểm tra


Với plug-in tại chỗ trong trang của bạn hoặc bên ngoài. js, giờ đây bạn có thể chỉ cần sử dụng bộ chọn để áp dụng nó

$(".numberinput").forceNumeric();

Trình cắm về cơ bản đi qua từng phần tử được chọn và kết nối trình xử lý sự kiện keydown(). Khi một phím được nhấn, trình xử lý sẽ được kích hoạt và mã khóa của đối tượng sự kiện được gửi. Nhớ lại rằng jQuery chuẩn hóa đối tượng Sự kiện JavaScript giữa các trình duyệt. Về cơ bản, mã này liệt kê một vài mã khóa và từ chối tất cả các mã khác. Nó trả về true để cho biết phím nhấn sẽ đi qua hoặc false để ăn tổ hợp phím và không xử lý nó để loại bỏ nó một cách hiệu quả

Đơn giản và công nghệ thấp, và nó hoạt động mà không có quá nhiều thay đổi về hành vi của hộp văn bản thông thường

Làm cách nào để hạn chế đầu vào html thành các giá trị số?
bài đăng này được tạo và xuất bản với Markdown Monster

Các bài viết khác có thể bạn thích

  • JavaScript JSON Phân tích cú pháp ngày và ngày thực
  • Tạo khuôn mẫu cho khách hàng với jQuery
  • Sử dụng HTML 5 SessionState để lưu nội dung trang được hiển thị
  • Sử dụng Bộ lọc CSS độ sáng () để đánh dấu chung Nội dung

Chia sẻ

Làm cách nào để hạn chế đầu vào html thành các giá trị số?

Nội dung này có hữu ích với bạn không?

Được đăng bằng JavaScript  jQuery  HTML


Tiếng nói của lý trí


 


John Idol
22 tháng 4 năm 2011

lại. Hạn chế đầu vào trong các hộp văn bản HTML thành các giá trị số

Đẹp. Đối với những thứ như vậy, tôi thường sử dụng plugin tạo mặt nạ [http. // bụi kỹ thuật số. com/projects/masked-input-plugin/] cho phép các phím điều hướng, v.v.

// 2 chữ số
$('. trường số'). mask('?99');

Nhưng đây có vẻ là một giải pháp thay thế nhẹ hơn đẹp mắt nếu bạn chỉ cần chức năng đó.


Pete
22 tháng 4 năm 2011

lại. Hạn chế đầu vào trong các hộp văn bản HTML thành các giá trị số

Đây là một ví dụ tuyệt vời về cách thực hiện plugin cho JQuery. Bạn có thể muốn xem jQuery AlphaNumeric của Paulo P. Bến du thuyền. Plugin này giới hạn đầu vào theo nhiều cách thú vị.
Trang ví dụ tại http. //www. manukalodgenz. com/js/


Boiss
22 tháng 4 năm 2011

lại. Hạn chế đầu vào trong các hộp văn bản HTML thành các giá trị số

Tốt nhưng tôi nghĩ rằng bạn có thể nhấp chuột phải rồi dán thứ gì đó không phải là số vào đầu vào đó


Mischa Kroon
22 tháng 4 năm 2011

lại. Hạn chế đầu vào trong các hộp văn bản HTML thành các giá trị số

Điều này trở nên phức tạp hơn khi bạn muốn hỗ trợ.
10. 50

10,50

Tùy thuộc vào cài đặt văn hóa.


sansknowlede
24 tháng 4 năm 2011

lại. Hạn chế đầu vào trong các hộp văn bản HTML thành các giá trị số

tuyệt,
chúng tôi từng có một tệp js riêng chứa tất cả các hoạt động cần thiết như chỉ văn bản , chỉ số, khác ngày, v.v. và sử dụng jquery liên kết với hộp văn bản.


Hemanshu Bhojak
25 tháng 4 năm 2011

lại. Hạn chế đầu vào trong các hộp văn bản HTML thành các giá trị số

Điều này không hoạt động khi bạn sao chép và dán vào hộp văn bản


Rick Strahl
25 tháng 4 năm 2011

lại. Hạn chế đầu vào trong các hộp văn bản HTML thành các giá trị số

Có, tính năng này không hoạt động đối với *xác thực* đầu vào số, vì vậy nếu bạn dán thì tính năng này không hiệu quả. Nhưng đó không phải là trọng tâm của phần bổ trợ nhỏ này - đó là phần bổ trợ xác thực dành cho. Mục tiêu ở đây là hạn chế đầu vào của người dùng trong khi nhập để không nhập các ký tự không hợp lệ.

Chắc chắn có thể thực hiện với các ký tự bổ sung cho dấu phân cách, dấu thập phân và ký hiệu số âm. Sẽ thêm điều đó khi tôi có một phút.


John Walker
Ngày 04 tháng 5 năm 2011

lại. Hạn chế đầu vào trong các hộp văn bản HTML thành các giá trị số

@Pete +1 cho jQuery AlphaNumeric của Paulo P. Bến du thuyền


Rik
05 tháng 5 năm 2011

Khó chịu

Xin đừng làm điều này. Nó thực sự phiền phức. Xác thực, có. Tuy nhiên, đừng cố gây rối với cách tôi gõ


Rick Strahl
Ngày 07 tháng 5 năm 2011

lại. Hạn chế đầu vào trong các hộp văn bản HTML thành các giá trị số

Đã cập nhật đoạn mã với một số tính năng bổ sung dựa trên phản hồi nhận xét. Đã thêm bàn phím số và cho phép phân tách thập phân/nghìn. Không có nỗ lực định dạng nào được thực hiện.

Rất nhiều nhận xét rằng điều này sẽ không giải quyết được tất cả các vấn đề về nhập số và điều đó rất đúng - điều đó không có nghĩa là. Điều này được cho là hoạt động như một hỗ trợ đầu vào. Bạn vẫn sẽ cần xác thực đầu vào cuối cùng để định dạng đúng, v.v. phía máy khách hoặc trên máy chủ.


Matt
18 tháng 6 năm 2011

Làm tốt lắm

Tác phẩm tuyệt vời - như bạn nói, đó không phải là trình xác thực, mà là công cụ hỗ trợ nhập cảnh.

@Rick - đôi khi, khi người dùng và người đọc mục nhập biểu mẫu không biết sử dụng máy tính, chúng tôi cần hạn chế nội dung mọi người có thể nhập để hạn chế nhầm lẫn.


Pete
Ngày 15 tháng 7 năm 2011

lại. Hạn chế đầu vào trong các hộp văn bản HTML thành các giá trị số

Bạn nên thêm khóa == 110 cho dấu thập phân numpad


Rick Strahl
Ngày 18 tháng 7 năm 2011

lại. Hạn chế đầu vào trong các hộp văn bản HTML thành các giá trị số

@Pete - đã thêm, cảm ơn


kupissimo
Ngày 12 tháng 1 năm 2012

lại. Hạn chế đầu vào trong các hộp văn bản HTML thành các giá trị số

Bản sửa lỗi bổ sung.
1. chỉ cho phép một dấu tách thập phân
2. sửa chữ số thập phân

var decSeparator =".";//or ","
(function(jQuery) {
    function internalCheck(code, ch, key, v) {
        if (key==code)
            if (ch==decSeparator) {
                    if (v.indexOf(decSeparator)!=-1) 
                        return false;
            } else {
                return false;
            }
        return true;
    }
 
    jQuery.fn.forceNumeric = function (options) {
        var opts = jQuery.extend({}, jQuery.fn.forceNumeric.defaults, options);
    
        return this.each(function () {
            var o = jQuery.meta ? jQuery.extend({}, opts, $this.data()) : opts;
            $(this).keydown(function (e) {
                var key = e.which || e.keyCode;
                
                if (!e.shiftKey && !e.altKey && !e.ctrlKey &&
                // numbers   
                    key >= 48 && key <= 57 ||
                // Numeric keypad
                    key >= 96 && key <= 105 ||
                // comma, period and minus, . on keypad      '
                   key == 190 || key == 188 || key == 109 || key == 110 || key == 222 ||
                // Backspace and Tab and Enter
                   key == 8 || key == 9 || key == 13 ||
                // Home and End
                   key == 35 || key == 36 ||
                // left and right arrows
                   key == 37 || key == 39 ||
                // Del and Ins
                   key == 46 || key == 45) {
                    var v=$(this).val();
                
                    var tmp =internalCheck(190,".",key,v);
                    if (!tmp) return false;
                    
                    var tmp =internalCheck(188,",",key,v);
                    if (!tmp) return false;
    
                    return true;
                } else if (e.ctrlKey){
                    //ctrl-c       ctrl-v       ctrl-x
                    if (key==67 || key==86  || key==90)
                        return true;
                }
                return false;
            });
            
            $(this).blur(function (e) {
                var v=jQuery.trim($(this).val());
                if (v=='') {
                    return;
                }
                
                if(o.fixDecimals!=-1) {
                    var num = parseFloat(v);
                    var numSix =  num.toFixed(o.fixDecimals);
                    $(this).val(numSix);
                }
    
            });
            
            
        });   
        jQuery.fn.forceNumeric.defaults = {
                fixDecimals : -1
            };
    };
})(jQuery);


Ares
30 tháng 1 năm 2012

lại. Hạn chế đầu vào trong các hộp văn bản HTML thành các giá trị số

chương trình này hoạt động tốt ngoại trừ việc nó không cho phép nhập các giá trị bàn phím số từ máy tính xách tay vì chúng tôi phải nhấn phím Fn để sử dụng các giá trị đó trên máy tính xách tay

Làm cách nào để đặt giá trị mặc định cho loại đầu vào = số trong HTML?

Thuộc tính defaultValue của Số đầu vào .
Thay đổi giá trị mặc định của trường số. getElementById("myNumber"). defaultValue = "16";
Lấy giá trị mặc định của trường số. getElementById("myNumber"). giá trị mặc định;
Một ví dụ cho thấy sự khác biệt giữa thuộc tính defaultValue và value. getElementById("myNumber");

Làm cách nào để đặt xác thực số điện thoại di động trong HTML?

Hãy dùng thử .
mẫu="[0-9]{3}-[0-9]{3}-[0-9]{4}"
bắt buộc>
Định dạng. 123-456-7890