2015-10-04 13 views
14

Tôi có type=number lĩnh vực đầu vào và tôi đã thiết minmax giá trị cho nó:HTML phút số đầu vào và tối đa không hoạt động đúng

<input type="number" min="0" max="23" value="14"> 

Khi tôi thay đổi thời gian trong giao diện người dùng trả lại bằng cách sử dụng mũi tên nhỏ trên phía bên tay phải của trường nhập, mọi thứ hoạt động đúng - Tôi không thể đi quá 23 trở xuống 0. Tuy nhiên, khi tôi nhập số bằng tay (sử dụng bàn phím), thì không hạn chế nào có hiệu lực.

Có cách nào để ngăn mọi người nhập bất kỳ số nào họ muốn không?

+0

bạn có thể đạt được restrcirion với ehlp của js/jquery. – johannesMatevosyan

+0

Nhưng luôn luôn nhớ, bạn không thể hạn chế những gì sẽ được gửi trở lại máy chủ của bạn. Các đầu vào phải luôn được xác nhận ở bên cạnh bạn (cũng). – m02ph3u5

Trả lời

7

Với HTML5 maxmin, bạn chỉ có thể giới hạn giá trị để nhập các chữ số. Nhưng bạn cần sử dụng JavaScript hoặc jQuery để thực hiện loại thay đổi này. Một ý tưởng tôi có là sử dụng data- thuộc tính và lưu các giá trị cũ:

$(function() { 
 
    $("input").keydown(function() { 
 
    // Save old value. 
 
    $(this).data("old", $(this).val()); 
 
    }); 
 
    $("input").keyup(function() { 
 
    // Check correct, else revert back to old value. 
 
    if (parseInt($(this).val()) <= 23 && parseInt($(this).val()) >= 0) 
 
     ; 
 
    else 
 
     $(this).val($(this).data("old")); 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> 
 
<input type="number" min="0" max="23" value="14" />

+2

Tôi có thể đặt cược rằng tôi vẫn có thể nhanh chóng nhập số ngoài phạm vi và gửi nó :) – Marek

+1

Điều này có lỗi lớn. Ví dụ: nếu bạn cần nhập '23', nó sẽ không cho phép bạn thực hiện' mỗi lần tắt 'và do đó bạn cho rằng bạn chỉ nhập' 2'. Ngoài ra, bạn có thể giữ một khóa cho đến khi nào bạn muốn, tức là '5555555' vì không có khóa 'keyup' nào bị bắt. – joel2703

+0

@ joel2703 Đây là bài đăng cũ hai năm và bạn có nghĩ rằng điều này sẽ làm tăng thêm giá trị không? Nếu có, vui lòng chỉnh sửa câu trả lời của tôi và thêm nội dung của bạn. –

9

lẽ Thay vì sử dụng "số" loại mà bạn có thể sử dụng "phạm vi" kiểu đó sẽ hạn chế việc sử dụng từ nhập số vì nó sử dụng thanh trượt và nếu bạn muốn định cấu hình để hiển thị số hiện tại chỉ cần sử dụng JavaScript

+0

Tốt nhất ... ': P' –

-1

nếu bạn vẫn đang tìm câu trả lời, bạn có thể sử dụng kiểu nhập = "số".
phút làm việc tối đa nếu nó thiết lập theo thứ tự:
1 tên
2 maxlength
3 kích thước
4 phút
5-max
chỉ cần sao chép nó

<input name="X" maxlength="3" size="2" min="1" max="100" type="number" /> 

khi bạn nhập số/chữ cái theo cách thủ công (sử dụng bàn phím) và gửi một thông báo nhỏ sẽ xuất hiện trong trường hợp chữ cái "vui lòng nhập số" trong trường hợp số ra khỏi phạm vi "vui lòng chọn giá trị không nhiều hơn/ít hơn hơn .. "

+2

Điều này trông giống như một giải pháp tốt, tuy nhiên tôi đã cố gắng trong một phản ứng' đầu vào' và có một lỗi. Sau đó kiểm tra 'input' [documentation] (https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input) và phát hiện ra rằng' maxlength' và 'size' không được hỗ trợ cho '

+0

Cái gì? Đơn đặt hàng có quan trọng không? Sao có thể như thế được? – Herbertusz

+0

maxlength chỉ được thiết kế để hoạt động trên loại = "văn bản" – Nick

0

Trong một số trường hợp, có thể sử dụng pattern thay vì minmax. Nó hoạt động chính xác với required.

+0

Cảm ơn, nó giúp tôi :) –

Các vấn đề liên quan