2013-09-04 29 views
12

Tôi có mã sau để ngăn người dùng nhập không gian khi độ dài bằng 0. Bây giờ, làm cách nào để ngăn người dùng nhập tất cả các ký tự đặc biệt (bất kỳ điều gì khác ngoài a-z A-Z 0-9) khi độ dài bằng 0?Làm cách nào để ngăn người dùng nhập các ký tự đặc biệt vào hộp văn bản khi độ dài bằng 0?

$('#DivisionName').bind('keypress', function(e) { 
    if($('#DivisionName').val().length == 0){ 
     if (e.which == 32){//space bar 
      e.preventDefault(); 
     } 
    } 
}); 

Đây là hộp văn bản của tôi.

<input type="text" id="DivisionName" /> 
+0

xác định "nhân vật đặc biệt" – musefan

+0

bất kỳ ký tự khác ngoài az AZ 0-9 – Bittu

+0

Vì vậy, đưa rằng trong câu hỏi của bạn – musefan

Trả lời

14

Các phạm vi bức thư và chữ số là (bao gồm):

  • 97 - 122 (az)
  • 65-90 (AZ)
  • 48-57 (0-9)

Đây là những gì bạn so sánh e.which chống lại.

if (e.which < 48 || 
    (e.which > 57 && e.which < 65) || 
    (e.which > 90 && e.which < 97) || 
    e.which > 122) { 
    e.preventDefault(); 
} 

Hoặc, sử dụng logic nghịch đảo:

var valid = (e.which >= 48 && e.which <= 57) || (e.which >= 65 && e.which <= 90) || (e.which >= 97 && e.which <= 122); 
if (!valid) { 
    e.preventDefault(); 
} 

Cập nhật

Mặc dù vậy, bạn vẫn có thể muốn xác nhận nội dung lĩnh vực như một toàn thể sử dụng một biểu thức chính quy:

if (/^[A-Z0-9]+$/i.test(value)) { 
    // it looks okay now 
} 

Hoặc sửa trường bằng cách thay thế nội dung xấu:

var stripped = value.replace(/[^A-Z0-9]+/i, ''); 
+0

bạn có thể cho tôi mẫu làm việc không? – Bittu

+1

Biết bạn đã có mã so sánh, bạn chỉ cần sửa đổi đơn giản. Điều đó tự nó là một ví dụ làm việc –

+1

Tôi nghĩ rằng mã mẫu là một yêu cầu công bằng.Không phải vì OP không thể bị làm phiền, nhưng bởi vì nó làm cho câu trả lời hữu ích hơn trong tương lai – musefan

-1

Bạn có thể sử dụng regex để xác thực chuỗi. Something như ^[a-zA-z0-9].*

Đây là một bài viết về thử nghiệm một regex trong javascript : http://www.w3schools.com/jsref/jsref_regexp_test.asp

Và thậm chí bạn có thể ràng buộc một sự kiện thay đổi và không phải là một phím nhấn.

+0

Vấn đề duy nhất là anh ta có một phím bấm, không phải là một chuỗi. Nếu anh ta chuyển mã của mình để đọc nội dung văn bản anh ta cần phải triển khai nội dung có phạm vi văn bản để tránh các bước nhảy ngẫu nhiên. –

+0

Bạn hoàn toàn đúng. Trong mọi trường hợp, điều này vẫn giống như trường hợp xác thực biểu mẫu đơn giản. – Boranas

6

Đây là những gì bạn đang tìm kiếm:

$('#DivisionName').bind('keypress', function(e) { 

    if($('#DivisionName').val().length == 0){ 
     var k = e.which; 
     var ok = k >= 65 && k <= 90 || // A-Z 
      k >= 97 && k <= 122 || // a-z 
      k >= 48 && k <= 57; // 0-9 

     if (!ok){ 
      e.preventDefault(); 
     } 
    } 
}); 

hoặc xem tại đây: http://jsfiddle.net/D4dcg/

+1

shift + bất kỳ chữ cái nào theo sau bởi bất kỳ số nào, trong khi vẫn nhấn phím shift thực sự phá vỡ điều này một cách dễ dàng – mymlyn