2010-06-17 38 views

Trả lời

6

Nếu bạn có hộp văn bản sau đó bạn phải xử lý các sự kiện onkeypress

<input type='text' onkeypress='keypresshandler(event)' /> 

Bạn có thể sử dụng chức năng sau đây để hạn chế người sử dụng

function keypresshandler(event) 
    { 
     var charCode = event.keyCode; 
     //Non-numeric character range 
     if (charCode > 31 && (charCode < 48 || charCode > 57)) 
     return false; 
    } 
+0

Chúng tôi làm như thế này :) – Znarkus

+0

Tôi đã thử phương pháp này, và thấy bạn cần sử dụng onkeypress = 'return keypresshandler (event)' để nó hoạt động. – Bill

14

Bạn có thể làm điều này thông qua javascript (vì vậy nếu javascript bị tắt, bạn sẽ không thể giới hạn nó)

<input type="text" onkeyup="this.value = this.value.replace(/[^a-z]/, '')" /> 

Điều này wil l hạn chế nó chỉ với ký tự a-z. Thanh toán regular expressions để xem bạn có thể làm gì

+7

Hãy nhớ rằng mã này chỉ thực thi ở phía máy khách. Tập lệnh máy chủ phải được chuẩn bị để xử lý ** bất kỳ đầu vào ** nào và từ chối các ký tự không hợp lệ. –

+1

Điều này cần cờ toàn cầu trên regex. Điều này là bởi vì người ta có thể giữ một phím và có nó cam kết nhiều sự kiện quan trọng (và thêm nhiều số) trước khi phát hành, tại thời điểm đó chỉ có 1 sự kiện quan trọng đi ... nghĩa là chỉ một trong số nhiều ký tự không mong muốn bị xóa vì không có cờ toàn cục, nó chỉ thay thế 1 cho mỗi cuộc gọi. –

1
function isNumberKey1(evt) 
{ 
     var charCode = (evt.which) ? evt.which : event.keyCode; 
     if (char!=8(charCode < 65 || charCode > 106)) 
     return false; 

     return true; 
} 
+0

Vui lòng thêm một số mô tả vào mã của bạn. Tại sao giải pháp của bạn tốt hơn thì các giải pháp được đăng khác? – Artemix

2

Mặc dù vẫn có thể, với HTML5 không cần sử dụng giải pháp dựa trên JavaScript cho yêu cầu này.

<input type="text" name="text" pattern="[a-z0-9._%+-][email protected][a-z0-9.-]+\.[a-z]{2,3}$"> sẽ hạn chế các ký tự được phép theo mẫu RegExp đó (trong trường hợp này là: địa chỉ email hợp lệ).

Thuộc tính title sẽ được sử dụng làm cảnh báo/thông báo khi người dùng cố gắng gửi dữ liệu không khớp với yêu cầu.

<form action="/add_country.php"> 
    Country code: <input type="text" name="country_code" pattern="[A-Za-z]{3}" title="Three letter country code"> 
    <input type="submit"> 
</form> 

Xem documentation on HTML input element để biết thêm thông tin. Không phải tất cả các trình duyệt đều hỗ trợ tốt như nhau (như Safari).

0

Câu trả lời của Ben Rowe thực sự là cách tiếp cận nó. Tuy nhiên, ký tự sẽ xuất hiện trong hộp văn bản trước khi nó bị xóa. Bạn có thể ngăn chặn điều đó bằng cách sử dụng oninput thay vì onkeyup:

<input type="text" oninput="this.value = this.value.replace(/[^a-z]/, '')" /> 
Các vấn đề liên quan