2011-04-14 68 views
8

Tôi đang phát xung quanh với một số yếu tố HTML5 và chạy vào một hành vi vui nhộn. Tính năng này chỉ hoạt động trong Chrome.Trình xử lý sự kiện HTML5 cho cuộn đầu vào số - Chỉ Chrome

Sử dụng loại đầu vào số, bạn có thể đặt min, max và step, và nhận các mũi tên lên và xuống để điều khiển đầu vào. <input type="number" min="0" max="100" step="5" />

Tôi nhận thấy rằng việc ràng buộc trình xử lý sự kiện nhấp chuột ghi vào mũi tên, vì thay đổi sẽ không thực sự xảy ra cho đến khi trường bị mờ. Bạn cũng có thể sử dụng các phím mũi tên lên và xuống trên bàn phím để thay đổi giá trị trong giới hạn và liên kết nhấn phím có thể chọn các phím này.

Trong Chrome, tuy nhiên, bạn cũng có thể sử dụng con lăn chuột để thay đổi đầu vào, bằng cách di chuột qua đầu vào và cuộn. Tuy nhiên, tôi đã không thể tìm được cách để lắng nghe sự kiện này.

Example on jsfiddle

HTML:

<input type="number" min="0" max="100" step="5" id="test" /> 

Javascript (sử dụng jQuery):

$('#test').click(function(){ 
    $(this).after('<br />click'); 
}); 

$('#test').change(function(){ 
    $(this).after('<br />change'); 
}); 

$('#test').keypress(function(){ 
    $(this).after('<br />keypress'); 
}); 

Bất kỳ ý tưởng về làm thế nào để lắng nghe cho rằng sự thay đổi cuộn? Một lần nữa, điều này chỉ hoạt động trong Chrome như của bài viết này.

+1

Trong khi không trả lời cho câu hỏi của bạn, bạn cũng có thể xem xét theo dõi thay đổi giá trị bằng vòng lặp setTimeout, thay thế tất cả trình xử lý sự kiện. Hiệu suất không lớn nhưng hoạt động với bất kỳ phương thức nhập nào. –

+0

Điều đó hoàn toàn có thể hoạt động. Ngay cả chỉ cần bắt đầu hẹn giờ trên tập trung, và giết nó trên blur. Như một trường hợp cạnh tôi sẽ không phải lo lắng về nó về sản xuất, nhưng tôi đã tò mò về giá trị lý thuyết. – hookedonwinter

+1

FWIW - có vẻ như Chrome hiện đang kích hoạt sự kiện thay đổi khi bạn cuộn qua trường nhập số hoặc nhấp vào nút tăng. –

Trả lời

8

Plugin jQuery Mouse Wheel dường như thực hiện thủ thuật. http://plugins.jquery.com/project/mousewheel

$('#test').mousewheel(function(){ 
    $(this).after('<br />mouse wheel'); 
}); 
+3

[Tôi chia rẽ jsFiddle của OP với plugin đó] (http://jsfiddle.net/V9Uck/), hiển thị giải pháp của bạn – ExtraGravy

+2

Thật kỳ quặc khi bạn cuộn với điều đó ... – hookedonwinter

+2

trong khi jQuery không hỗ trợ nó ra khỏi hộp và nếu bạn không muốn nhập một trình cắm thêm mỗi khi thiếu tính năng, bạn có thể chỉ sử dụng trình nghe vani '$ ('# test') [0] .addEventListener ('mousewheel', function() { $ ('# kiểm tra '). ('
cuộn '); }); ' – zeachco

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