2009-05-17 39 views
11

Tôi muốn vô hiệu hóa người dùng nhập một ký tự vào trường nhập văn bản HTML không phải là chữ cái hoặc số.Cách lấy giá trị nhấn phím từ một đối tượng sự kiện trong jQuery

Chức năng chính xác này có thể được nhìn thấy trên trang đăng ký Twitter (trường tên người dùng) https://twitter.com/signup.

Tôi đang cố viết điều này trong jQuery. Nhưng tôi cần để có thể lấy giá trị sự kiện nhấn phím để kiểm tra phím nào được nhấn và nếu giá trị của nó được chấp nhận.

Dưới đây là các mã:

<input type="text" id="username" name="username" /> 

<script type="text/javascript"> 
$("#username").keypress(function(event){ 

// Get the keypress value 
// ...? 

// If the keypress value is illegal then disable it 
if (...){ 
    event.preventDefault(); 
} 

}); 
</script> 

Trả lời

32

Bạn có thể sử dụng 'mà' tài sản của đối tượng sự kiện để nắm bắt keycode. Bạn có thể sử dụng nội dung nào đó như mã sau để lấy ký tự tương ứng -

 
var c = String.fromCharCode(e.which); 

Xem liên kết http://api.jquery.com/keypress/ để biết giải thích chi tiết.

+0

Corrected liên kết NÀY: http://api.jquery.com/keypress/ Xem thêm http://api.jquery.com/event .which/để biết thêm thông tin về sự kiện.which –

+0

whewww nice man :) – Nav

2

Khi người dùng nhấn một phím mã ascii tương ứng là nội dung được gửi trong sự kiện. Sử dụng trường e.which

Vì vậy, điều kiện của bạn có thể trông giống như thế này:

if (e.which > 47 && e.which < 58) 
{ 
    // it is a number 
} 

Có rất nhiều cách khác nhau mà bạn có thể viết các điều kiện. Có thể bằng cách sử dụng ánh xạ các ký tự được cho phép thành một mảng.

Để tham khảo, chữ thường: 65-90 Chữ thường: 97-122

Bạn nên nhận ra rằng điều này sẽ làm cho ứng dụng của bạn chỉ làm việc cho những người gõ bằng tiếng Anh bằng cách sử dụng bộ mã ASCII chuẩn. Người dùng quốc tế sẽ không thể viết trong trường biểu mẫu của bạn, bởi vì các mã khóa đó nằm ngoài phạm vi ASCII chuẩn và sẽ sử dụng mã hóa khác. Chỉ cần một cái gì đó để xem xét.

Ascii Codes: http://www.petefreitag.com/cheatsheets/ascii-codes/

0
var ako =''; 
    var novalue = ''; 
    jQuery('html').keypress(function(event){ 
     var valuekey = event.charCode; 
     ako = String.fromCharCode(event.which); 
     jQuery('.a').each(function(){ 
      var cn = jQuery(this).html(); 
      if(ako == cn){ 
       jQuery(this).hide('explode',{},'10000').remove(); 
      } 
      novalue +=cn; 
     }); 
     //alert(novalue); 
     jQuery("#cn").animate({width:'400px',border:'1px solid pink'},'slow'); 
    }); 

TRY ONE

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