7

Tôi đã tự hỏi liệu có thể nhận được kết quả cuối cùng trong sự kiện keypress không? Hiện nay, tôi đang sử dụng keyup bởi vì nó được kích hoạt sau người dùng đã thực hiện soạn thảo văn bản trong một texteara, nhưng tôi đã viết một phương pháp mà làm điều gì đó tương tự như sử dụng thư viện Mootools:Sự kiện nhấn phím JavaScript nhận giá trị kết thúc của văn bản

input.addEvent("keypress", function (input) { 
    var previous_result = this.value; 
    var end_result = this.value + input.key; 
}); 

Tuy nhiên, điều này phương pháp là khủng khiếp khi giao dịch với các phím đặc biệt như backspace, hoặc nếu người dùng chọn để sử dụng CTRL +một Backspace & & trong trường hợp giá trị của các yếu tố đầu vào sẽ không được "một chuỗi rỗng".

Tôi rất tò mò vì tôi đã quan sát công cụ tìm kiếm của Google gửi XMLHttpRequest VÀ biến đổi trang trước khi sự kiện keyup kích hoạt. Ngoài ra, đầu vào mà họ sử dụng quản lý để khắc phục sự cố xóa toàn bộ văn bản của tôi trong khi vẫn tận hưởng sự sang trọng của keypress.

Cảm ơn!

+0

Sử dụng 'phím tắt '? –

+0

@ExplosionPills: Đã thử nó, giá trị nằm sau kết quả thực tế trong 'keydown': < – User2121315

Trả lời

9

Điều này sẽ làm cho nó hoạt động:

input.addEvent("keypress", function (input) {  
    setTimeout(function() { 
     input.value // returns the updated value 
    }, 0);  
}); 

Live Demo:http://jsfiddle.net/yQQ5P/ (tôi sử dụng built-in API, như tôi không biết Mootools)

Vì vậy, bạn sử dụng một zero- thời gian chờ hoạt động như một sản lượng. Điều này cho phép chuỗi giao diện người dùng của trình duyệt có cơ hội cập nhật giá trị của đầu vào.

+0

Whoah, chỉ bao bọc mã này và nó hoạt động như một nét duyên dáng, hvala puno! – User2121315

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