Tôi có một trường văn bản biểu mẫu mà tôi muốn chỉ cho phép số và chữ cái. (Nghĩa là, không có # $ !, v.v ...) Có cách nào để ném lên một lỗi và ngăn phím bấm thực sự xuất ra bất cứ điều gì nếu người dùng cố gắng sử dụng bất kỳ ký tự nào khác ngoài số và chữ cái? Tôi đã cố gắng để tìm một plugin, nhưng chưa thực sự tìm thấy bất cứ điều gì mà thực hiện điều này ...jquery - xác thực ký tự trên nhấn phím?
Trả lời
$('input').keyup(function() {
var $th = $(this);
$th.val($th.val().replace(/[^a-zA-Z0-9]/g, function(str) { alert('You typed " ' + str + ' ".\n\nPlease use only letters and numbers.'); return ''; }));
});
EDIT:
Có một số câu trả lời tốt khác ở đây sẽ ngăn chặn đầu vào diễn ra.
Tôi đã cập nhật mỏ vì bạn cũng muốn hiển thị lỗi. Việc thay thế có thể có một chức năng thay vì một chuỗi. Hàm chạy và trả về một giá trị thay thế. Tôi đã thêm một số alert
để hiển thị lỗi.
+1 hoạt động độc đáo. http://jsfiddle.net/ntywf/ Mặc dù tôi có * cảm giác * OP cũng có thể muốn không gian được cho phép. – karim79
@ karim79 - Cảm ơn bạn đã thêm jsfiddle. Tôi nên thực sự làm điều đó thường xuyên hơn. – user113716
nó chặn các lệnh cần thiết như lên, xuống mũi tên, thay đổi và ctrl hoạt động là tốt. Làm thế nào để kiểm soát điều đó. –
$('#yourfield').keydown(function(e) {
// Check e.keyCode and return false if you want to block the entered character.
});
Vâng câu trả lời của patrick loại bỏ nhân vật nếu nó là sai, để thực sự ngăn chặn nhân vật khỏi bị đưa vào sử dụng lĩnh vực
$("#field").keypress(function(e) {
// Check if the value of the input is valid
if (!valid)
e.preventDefault();
});
Bằng cách này, bức thư sẽ không đến với textarea
Bạn có thể thử tiện ích mở rộng này:
jQuery.fn.ForceAlphaNumericOnly =
function()
{
return this.each(function()
{
$(this).keydown(function(e)
{
var key = e.charCode || e.keyCode || 0;
// allow backspace, tab, delete, arrows, letters, numbers and keypad numbers ONLY
return (
key == 8 ||
key == 9 ||
key == 46 ||
(key >= 37 && key <= 40) ||
(key >= 48 && key <= 57) ||
(key >= 65 && key <= 90) ||
(key >= 96 && key <= 105));
})
})
};
năng bảo mật bằng:
$("#yourInput").ForceAlphaNumericOnly();
Tôi chỉ nghĩ về giải pháp này: có thể có vấn đề nếu bạn chèn văn bản từ bộ đệm.Nếu người dùng nhấn ctrl + v, anh ta dự kiến văn bản của anh ta sẽ được chèn vào trường nếu nó hợp lệ. Cách tiếp cận này có thể không xử lý được. Phải kiểm tra nó mặc dù. – Juriy
Phần mở rộng jquery trên (ForceAlphaNumericOnly) là tốt nhưng vẫn cho phép các ký tự sau thông qua [email protected]#$%^&*()
Trên Mac của tôi, khi bạn nhấn thay đổi chìa khóa (keycode 16
) và sau đó , mã sẽ nhập !
nhưng mã khóa là 49
, mã khóa cho 1
.
Tôi thấy rằng việc kết hợp xác thực trên nhấn phím và khóa phím sẽ mang lại kết quả tốt nhất. Key up là phải nếu bạn muốn xử lý văn bản đã sao chép. Nó cũng là một bắt tất cả trong trường hợp các vấn đề trình duyệt chéo cho phép các giá trị không số vào hộp văn bản của bạn.
$("#ZipCode").keypress(function (event) {
var key = event.which || event.keyCode; //use event.which if it's truthy, and default to keyCode otherwise
// Allow: backspace, delete, tab, and enter
var controlKeys = [8, 9, 13];
//for mozilla these are arrow keys
if ($.browser.mozilla) controlKeys = controlKeys.concat([37, 38, 39, 40]);
// Ctrl+ anything or one of the conttrolKeys is valid
var isControlKey = event.ctrlKey || controlKeys.join(",").match(new RegExp(key));
if (isControlKey) {return;}
// stop current key press if it's not a number
if (!(48 <= key && key <= 57)) {
event.preventDefault();
return;
}
});
$('#ZipCode').keyup(function() {
//to allow decimals,use/[^0-9\.]/g
var regex = new RegExp(/[^0-9]/g);
var containsNonNumeric = this.value.match(regex);
if (containsNonNumeric)
this.value = this.value.replace(regex, '');
});
Trong Chrome khi dán (ctrl-v), khóa phím dường như không có bất kỳ giá trị nào cho this.value để regex không bao giờ khớp. Trong Firefox, tôi quan sát rằng End, Delete, Home, Page Up và Page Down không hoạt động trong trường. – peater
$(document).ready(function() {
$('.ipFilter').keydown((e) => {
if ($.inArray(e.keyCode, [46, 8, 9, 27, 13, 110, 190]) !== -1 ||
(e.keyCode === 65 && (e.ctrlKey === true || e.metaKey === true) ||
e.keyCode === 67 && (e.ctrlKey === true || e.metaKey === true) ||
e.keyCode === 86 && (e.ctrlKey === true || e.metaKey === true) ||
e.keyCode === 82 && (e.ctrlKey === true || e.metaKey === true)) ||
(e.keyCode >= 35 && e.keyCode <= 40)) {
return;
}
if ((e.shiftKey || (e.keyCode < 48 || e.keyCode > 57)) && (e.keyCode < 96 || e.keyCode > 105)) {
e.preventDefault();
}
});
});
- 1. jQuery: cách lọc ra các phím không phải ký tự trên sự kiện nhấn phím?
- 2. Thứ tự thay đổi/phím tắt/nhấn phím trong jQuery
- 3. Javascript/jQuery Nhấn phím ghi
- 4. Java: Đăng ký <ENTER> nhấn phím trên JTextPane
- 5. jQuery nhấn phím điều hướng trái/phải
- 6. Xác thực trường văn bản có ký tự đặc biệt
- 7. Chụp một phím nhấn trên nền
- 8. javascript nhấn phím enter
- 9. sự kiện nhấn phím trong tự động hoàn thành jquery ui
- 10. sự kiện nhấn phím jquery bắn vài lần
- 11. Làm cách nào để tìm hiểu phím ký tự nào được nhấn?
- 12. Phát hiện Phím Enter được nhấn với jquery
- 13. Mở bàn phím mềm khi nhấn phím
- 14. javascript - phát hiện phím ctrl được nhấn hoặc lên, sự kiện nhấn phím không kích hoạt
- 15. Kích hoạt sự kiện nhấn phím bàn phím mà không cần nhấn phím từ bàn phím
- 16. Plugin xác thực jQuery: chỉ chấp nhận các ký tự chữ cái?
- 17. trì hoãn các hành động giữa nhấn phím trong jQuery
- 18. Đường dẫn hành động thực sự xảy ra khi tôi nhấn một phím trên bàn phím và nó hiển thị trên vỏ là gì?
- 19. Tự động tạo Mã xác thực xác thực khi đăng ký
- 20. xóa độ trễ nhấn phím trong javascript
- 21. jQuery xác thực trên nhiều trường
- 22. Xác thực jQuery onblur
- 23. Cách lấy giá trị nhấn phím từ một đối tượng sự kiện trong jQuery
- 24. Làm thế nào để mô phỏng TAB trên ENTER nhấn phím trong javascript hoặc jQuery
- 25. Xác thực WPF khi nhập phím khóa
- 26. Ký tự đếm Jquery
- 27. Giảm thiểu hoạt động trên nhấn phím chính
- 28. Xác thực Jquery để xác thực URL
- 29. Dừng sự kiện nhấn phím
- 30. Java: Xác thực SSL Clientside với chứng chỉ tự ký
Rất tương tự như: http://stackoverflow.com/questions/995183/how-to-allow-only-numeric-0-9-in-html-inputbox-using-jquery – ThiefMaster
này sẽ không ngăn các ký tự không phải chữ và số được dán vào bằng menu ngữ cảnh (nhấp chuột phải và dán). Hãy thử rằng trên http://jsfiddle.net/ntywf –
là một plugin thực hiện điều đó rất thuận lợi: http://digitalbush.com/projects/masked-input-plugin/ – meo