Làm cách nào để hạn chế người dùng nhập các ký tự đặc biệt vào hộp văn bản. Tôi chỉ muốn nhập số và chữ cái (Đã nhập/Dán).Xác thực Javascript: Chặn các ký tự đặc biệt
Bất kỳ mẫu nào?
Làm cách nào để hạn chế người dùng nhập các ký tự đặc biệt vào hộp văn bản. Tôi chỉ muốn nhập số và chữ cái (Đã nhập/Dán).Xác thực Javascript: Chặn các ký tự đặc biệt
Bất kỳ mẫu nào?
Bạn có hai cách tiếp cận này:
Tôi sẽ đề xuất phương pháp thứ hai vì ít gây khó chịu hơn. Hãy nhớ cũng kiểm tra onpaste
. Nếu bạn chỉ sử dụng nhấn phím Sau đó, chúng tôi có thể sao chép và dán các ký tự đặc biệt để sử dụng onpaste
cũng để hạn chế dán các ký tự đặc biệt
Ngoài ra, tôi cũng sẽ xem xét lại nếu bạn thực sự muốn ngăn người dùng nhập ký tự đặc biệt. Bởi vì nhiều người có $, #, @ và * trong mật khẩu của họ.
Tôi giả định rằng điều này có thể là để ngăn chặn việc tiêm SQL; nếu vậy: tốt hơn là bạn xử lý kiểm tra phía máy chủ. Hoặc vẫn tốt hơn, thoát khỏi các giá trị và lưu trữ chúng trong cơ sở dữ liệu.
Về cơ bản, chỉ cần sử dụng trình xử lý onkeypress thích hợp. Xem http://www.qodo.co.uk/blog/javascript-restrict-keyboard-character-input/ và ví dụ http://www.qodo.co.uk/wp-content/uploads/2008/05/javascript-restrict-keyboard-character-input.html
Nó sẽ giúp bạn ... giả sử bạn có biểu mẫu có dạng "formname" và hộp văn bản có tên "txt". sau đó bạn có thể sử dụng đoạn mã sau để cho phép chỉ có giá trị aphanumeric
var checkString = document.formname.txt.value;
if (checkString != "") {
if (/[^A-Za-z\d]/.test(checkString)) {
alert("Please enter only letter and numeric characters");
document.formname.txt.focus();
return (false);
}
}
Hãy thử thế này, chức năng này cho phép tự chữ và số và không gian:
function alpha(e) {
var k;
document.all ? k = e.keyCode : k = e.which;
return ((k > 64 && k < 91) || (k > 96 && k < 123) || k == 8 || k == 32 || (k >= 48 && k <= 57));
}
trong html của bạn:
<input type="text" name="name" onkeypress="return alpha(event)"/>
Đối với ký tự đặc biệt:
var iChars = "[email protected]#$%^&*()+=-[]\\\';,./{}|\":<>?";
for (var i = 0; i < document.formname.fieldname.value.length; i++) {
if (iChars.indexOf(document.formname.fieldname.value.charAt(i)) != -1) {
alert ("Your username has special characters. \nThese are not allowed.\n Please remove them and try again.");
return false;
}
}
Tôi nghĩ rằng kiểm tra keypress
sự kiện là không hoàn toàn phù hợp, vì tôi tin rằng người dùng có thể sao chép/dán vào các ô nhập liệu mà không kích hoạt phím bấm.
Vì vậy, onblur
có lẽ hơi đáng tin cậy hơn (nhưng ít trực tiếp hơn).
Để thực sự đảm bảo ký tự mà bạn không muốn không được nhập vào hộp đầu vào (hoặc textareas, vv), tôi nghĩ rằng bạn sẽ cần phải
keypress
(nếu bạn muốn đưa ra phản hồi ngay lập tức) vàonblur
,Các mẫu mã trong câu trả lời khác sẽ làm việc tốt để làm kiểm tra client-side (chỉ không dựa chỉ về kiểm tra keypress
sự kiện), nhưng như đã được chỉ ra trong câu trả lời được chấp nhận, một máy chủ kiểm tra bên lề là thực sự cần thiết.
Hạn chế nhập không nhất thiết phải hạn chế, có thể nhập số điện thoại, mã Zip, ngày, v.v. Nhưng +1 với lời khuyên để tăng gấp đôi kiểm tra ở phía máy chủ! – PhiLho