2011-09-03 30 views
57

Possible Duplicate:
How to allow only numeric (0-9) in HTML inputbox using jQuery?Chỉ cho phép các số được nhập vào hộp văn bản

Làm cách nào để chỉ cho phép số được viết trong hộp văn bản này?

<input type="text" class="textfield" value="" id="extra7" name="extra7"> 
+4

Bạn xếp lớp làm số? Các số này là '12.3',' -4', 'V',' six'? –

+8

Không chắc chắn nếu một câu hỏi jquery sẽ là một bản sao. Javascript! = JQuery – Evert

+4

** Đây không phải là bản sao chính xác ** của câu hỏi được tham chiếu. Điều này nhắm mục tiêu một câu trả lời javascript trong khi khác nhắm mục tiêu một câu trả lời jQuery. Các đối tượng khác nhau, các giải pháp khác nhau. –

Trả lời

180

Bạn có thể đăng ký cho sự kiện onkeypress:

<input type="text" class="textfield" value="" id="extra7" name="extra7" onkeypress="return isNumber(event)" /> 

và sau đó xác định các chức năng isNumber:

function isNumber(evt) { 
    evt = (evt) ? evt : window.event; 
    var charCode = (evt.which) ? evt.which : evt.keyCode; 
    if (charCode > 31 && (charCode < 48 || charCode > 57)) { 
     return false; 
    } 
    return true; 
} 

Bạn có thể nhìn thấy nó trong action here.

+3

Tôi không chắc chắn cách diễn giải mệnh đề 'if' của bạn. Nếu nó lớn hơn 57, nó luôn luôn lớn hơn 31. Tôi nghĩ rằng bạn có thể loại bỏ các dấu ngoặc đơn. – pimvdb

+0

Cảm ơn nó đang hoạt động. Phạm vi mã ký tự cho chỉ chữ cái là gì? Tôi có nghĩa là tôi muốn làm điều đó để chấp nhận các chữ cái cũng chỉ trong một chức năng khác nhau của khóa học – EnexoOnoma

+0

@Giorkouros, đây là bảng ASCII: http://www.asciitable.com/ Tùy thuộc vào ý bạn bằng chữ cái kết quả sẽ khác nhau. Ví dụ: nếu bạn muốn A-Z, thì phạm vi là [65, 90] và a-z là [97, 122]. –

28

Với HTML5 bạn có thể làm

<input type="number"> 

Bạn cũng có thể sử dụng một mẫu biểu thức chính để hạn chế nhập văn bản.

<input type="text" pattern="^[0-9]*$" /> 
+3

Điều này không ngăn cản các ký tự không phải là số. – MyNameIsKo

+0

@ MyNameIsKo nên, có thể bạn đang sử dụng ứng dụng khách không hỗ trợ tính năng HTML5 này? – powtac

+0

nó không hoạt động trong Chrome hoặc Firefox. Bạn có thể đề cập đến xác thực việc gửi các ký tự không phải là số, hoạt động đúng với HTML5. Tuy nhiên, câu hỏi ban đầu đã quan tâm đến việc ngăn chặn hoàn toàn mục nhập không phải là số. Tôi khá chắc chắn JavaScript vẫn là cách duy nhất để làm điều này. – MyNameIsKo

13

Bạn cũng có thể sử dụng một số thuộc tính HTML5, một số trình duyệt có thể đã tận dụng chúng (type="number" min="0").

Dù bạn làm gì, hãy nhớ kiểm tra lại đầu vào của bạn ở phía máy chủ: bạn không bao giờ có thể giả định xác thực phía máy khách đã được thực hiện.

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