2013-02-11 40 views
9

Tôi đã tìm thấy một số hướng dẫn tương tự, nhưng không có cách nào giúp, tất cả đều là ký tự đặc biệt hoặc chữ số.Tắt một số ký tự trong trường nhập

Tôi cần phải đặt loại người dùng chỉ 1, 2, 3, 4, 5, N, O, A, B, C. tất cả các ký tự khác nên bị hạn chế.

Bất kỳ cách nào tôi có thể tự tạo lựa chọn các ký tự bị hạn chế/được phép cho đầu vào?

  • Không quen thuộc lắm với javascript.
+3

'tất cả trong số họ là một trong hai đối với ký tự đặc biệt hoặc cho digits.' thể bạn không chỉ cần thay đổi mã, chứ không phải chỉ một cách mù quáng sao chép và dán? – nhahtdh

+0

sử dụng http://archive.plugins.jquery.com/project/limitkeypress – DON

+0

liên kết mới cho limitkeypress http://brianjaeger.com/process.php –

Trả lời

9

Hãy thử điều này

$(function(){ 
 
    $('#txt').keypress(function(e){ 
 
    if(e.which == 97 || e.which == 98 || e.which == 99 || e.which == 110 || e.which == 111 || e.which == 65 || e.which == 66 || e.which == 67 || e.which == 78 || e.which == 79 || e.which == 49 || e.which == 50 || e.which == 51 || e.which == 52 || e.which == 53){ 
 
    } else { 
 
     return false; 
 
    } 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input type='text' id='txt' value='' onpaste="return false" />

Cập nhật 09 Tháng Ba 2018

$(function(){ 
 
    $('#txt').keypress(function(e){ 
 
    // allowed char: 1 , 2 , 3, 4, 5, N, O, A, B, C 
 
    let allow_char = [97,98,99,110,111,65,66,67,78,79,49,50,51,52,53]; 
 
    if(allow_char.indexOf(e.which) !== -1){ 
 
     //do something 
 
    } 
 
    else{ 
 
     return false; 
 
    } 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input type='text' id='txt' value='' onpaste="return false" />

+0

@mplungjan: làm thế nào tôi có thể cải thiện nó? –

+0

Thx. Tôi cần nó cho toàn bộ hình thức, vì vậy tôi đã chỉnh sửa nó để sử dụng lớp thay vì ID. – Nutic

+0

Không hoạt động với các ký tự được tạo bằng các công cụ sửa đổi được nhấn, phải không? – DanMan

23

với JQuery,

$("input").keypress(function(e) { 
    var chr = String.fromCharCode(e.which); 
    if ("12345NOABC".indexOf(chr) < 0) 
     return false; 
}); 

mà không JQuery

document.getElementById("foo").onkeypress = function(e) { 
    var chr = String.fromCharCode(e.which); 
    if ("12345NOABC".indexOf(chr) < 0) 
     return false; 
}; 

Đối với một lớp lót, từ bình luận @mplungjan và @ matthew-lock của

document.querySelector("#foo").onkeypress = function(e) { 
    return "12345NOABC".indexOf(String.fromCharCode(e.which)) >= 0; 
}; 
+5

hoặc 'return" 12345NOABC ".indexOf (chr)> = 0;' nếu bạn thích oneliners – mplungjan

+0

@mplungjan, hãy gọi số – allenhwkim

+0

hoặc thậm chí 'return" 12345NOABC ".indexOf (String.fromCharCode (e.which))> = 0;' để giảm nó thành một dòng –

0

Nếu bạn muốn vô hiệu hóa một vài ký tự khỏi trường nhập bạn có thể làm một cái gì đó như thế:

<input type="text" onkeydown="return (event.keyCode!=86);"/> 

86 là mã cho V. Mã kiểm tra cho các khóa khác từ liên kết sau.

https://www.cambiaresearch.com/articles/15/javascript-char-codes-key-codes

+0

Điều này khác với câu trả lời của [Câu hỏi của Chauhan] như thế nào (https://stackoverflow.com/a/14806389/3789665)? – greybeard

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