Chúng tôi có một hộp văn bản nơi người dùng được cho là nhập một số dữ liệu. Tuy nhiên, dữ liệu đó không được vượt quá 500 ký tự. Để hoàn thành việc chúng tôi đã triển khai chức năng sau được gọi là sự kiện KeyUp:Kích thước văn bản thay đổi theo lập trình đang ngăn sự kiện thay đổi
function keyupMaxLimit(obj, maxlen) {
if (parseInt(obj.value.length) > maxlen) {
$(obj).val($(obj).val().substr(0,maxlen));
}
}
Điều này đang hoạt động: người dùng không thể tham gia nhiều hơn. Chúng tôi cũng có một chức năng liên quan đến sự kiện Thay đổi của cùng một hộp văn bản, để phát hiện các thay đổi và thực hiện phép thuật của chúng tôi.
$(document).on("change", "#myTextBox", function() {
//magic here
});
Điều này cũng hoạt động: khi người dùng thay đổi văn bản chức năng đang được gọi.
Tuy nhiên, đây là vấn đề của chúng tôi, hai chức năng này không hoạt động cùng nhau. Ví dụ: nếu người dùng giới thiệu nhiều ký tự mà anh ta/cô ấy cho là, chức năng đầu tiên sẽ cắt văn bản nhưng văn bản thứ hai sẽ không được gọi!
Dường như những thay đổi chúng tôi thực hiện cho hộp văn bản trên chức năng đầu tiên là ngăn chặn/xóa sự kiện Thay đổi. Điều này có đúng không? Có cách giải quyết nào không? Tôi không thể kích hoạt một cách rõ ràng sự kiện Change trên hàm đầu tiên bởi vì chúng ta sẽ tạo các thay đổi không cần thiết.
EDIT - Bạn có thể thấy điều này xảy ra ở đây: http://jsfiddle.net/jpaires/dpujx/ Mở bảng điều khiển của trình duyệt và viết "12345" trên hộp văn bản. Sự kiện sẽ được kích hoạt ("a-ok" trên bảng điều khiển). Tuy nhiên, nếu bạn viết "123456" thì văn bản sẽ bị cắt và sự kiện sẽ KHÔNG được kích hoạt (không có "a-ok" trên bảng điều khiển). Cảm ơn Juhana :)
Giả sử rằng "ma thuật" chỉ là 'keyupMaxLimit (điều này, 500); 'nó sẽ hoạt động tốt. Không có gì ở đó sẽ xóa một trình xử lý sự kiện – Archer
sự kiện khóa của bạn có thể có một số lỗi .. vui lòng cho chúng tôi biết mã đó ... quá – Darshan
@Archer Vâng, đúng vậy. Trong thẻ textarea của tôi, tôi có thuộc tính như sau: onkeyup = "keyupMaxLimit (this, 500); – jpaires