2009-04-30 36 views
28

Làm cách nào tôi có thể ràng buộc sự kiện OnChange của một TextBox để hoạt động bằng jQuery?Làm cách nào để liên kết sự kiện onchange của TextBox bằng JQuery?

Am cố gắng này và thất bại của nó:

$(document).ready(function() { 
    $("input#tags").bind("change",autoFill); 
}); 

function autoFill() { 
    $("#tags").autocomplete("/taglookup/", { 
     width: 320, 
     max: 4, 
     highlight: false, 
     multiple: true, 
     multipleSeparator:",", 
     scroll: true, 
     scrollHeight: 300, 
     delay: 10 
    }); 
} 

NB:. Tôi muốn thực hiện một TextBox Tag như một cho stackoverflow trong đó phát hiện OnChange sự kiện và các cuộc gọi chức năng AJAX khi một loại dùng trong

+1

Chính xác thất bại là gì? Tự động điền không được gọi hay là cái gì khác? – kgiannakakis

+0

Đối với hộp văn bản có chức năng tự động hoàn tất, có thể đây là sự kiện trên bàn phím tốt hơn. – Eddy

+0

@Eddy, tại sao vậy? Bạn sẽ không được tốt hơn gửi yêu cầu AJAX của càng sớm càng tốt? –

Trả lời

31

bạn đang tìm kiếm KeyDown/báo chí/lên

$("#inputID").keydown(function(event) { 
    alert(event.keyCode); 
}); 

hoặc sử dụng ràng buộc $ ("# inputID"). ràng buộc ('onkeydown', ...

012.

http://docs.jquery.com/Events

+1

Tôi thấy rằng bằng cách sử dụng 'keydown' có nghĩa là trình xử lý của tôi sẽ kích hoạt một số tổ hợp phím lạ như ALT + TAB. –

+3

Khoá * chỉ hoạt động đối với các lần nhấn phím. Nếu bạn dán nội dung nào đó vào hộp văn bản bằng trình đơn ngữ cảnh chuột, nó sẽ không kích hoạt. Sử dụng một sự kiện onchange thường là con đường để đi. –

+1

@ ingredient_15939 đó là lý do tại sao câu trả lời của tôi đề cập cụ thể "Nếu bạn đang tìm kiếm KEYdown/press/up", không nói về các sự kiện chuột –

1

Tôi trả lời lần thứ hai của Chad Grant và cũng gửi bài viết trên blog này [liên kết đã xóa] để bạn xem thú vị.

+0

Liên kết đó (http://themaingate.net/dev/javascript/jquerys-annoying- hành vi chỉnh sửa) dường như đã chết. –

+0

ONOZ. Tôi ghét nó khi điều đó xảy ra. Tôi sẽ xóa liên kết. :( – vitaminjeff

18

Bạn phải thay đổi tên sự kiện từ "thay đổi" để "onchange":

$(document).ready(function(){ 
     $("input#tags").bind("onchange", autoFill); 
      }); 

hoặc sử dụng các thay đổi phím tắt phương pháp kết dính:

$(document).ready(function(){ 
     $("input#tags").change(autoFill); 
      }); 

Lưu ý rằng các sự kiện onchange thường bắn khi người dùng rời khỏi đầu vào, vì vậy để tự động hoàn tất, bạn nên sử dụng sự kiện nhấn phím.

7

Sự kết hợp của keyupchange là không nhất thiết phải đủ (autocomplete của trình duyệt và dán bằng chuột cũng thay đổi các nội dung của một hộp văn bản, nhưng không cháy, một trong những sự kiện):

jquery change not working incase of dynamic value change

0

nếu bạn đang cố gắng sử dụng jQuery aut plugin đầy đủ, sau đó tôi nghĩ bạn không cần phải liên kết với sự kiện onChange, nó sẽ

1

Chad nói gì, ngoại trừ tốt hơn để sử dụng .keyup trong trường hợp này vì với .keydown và .keypress giá trị của đầu vào là vẫn còn giá trị cũ hơn tức là phím mới nhất được nhấn sẽ không được phản ánh nếu .val() được gọi.

Điều này có lẽ nên là nhận xét về câu trả lời của Chad nhưng tôi chưa có quyền nhận xét.

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