ฉันกำลังพัฒนาการแทนที่เมนูแบบเลือกใน jquery
ก่อนอื่นฉันต้องทำให้เมนูเลือกใหม่สามารถโฟกัสได้โดยเพียงเพิ่ม tabindex="0"
ลงในคอนเทนเนอร์
จากนั้น ฉันปิดการใช้งานโฟกัสบนเมนูเลือกดั้งเดิมและให้ความสำคัญกับ อันใหม่. เมื่อโฟกัสอันใหม่แล้วคุณกดลูกศรขึ้นและลง ตัวเลือกจะเปลี่ยนไปตามนั้น แต่มีปัญหาใหญ่ เมื่อคุณกดลูกศร ร่างกายจะเคลื่อนไหวไปด้วย
จนถึงตอนนี้ฉันได้ลองวิธีแก้ปัญหาเหล่านี้ทั้งหมดแล้ว แต่โชคไม่ดีเลย:
$(window).unbind('scroll');
$(document).unbind('scroll');
$('body').unbind('scroll');
$(window).unbind('keydown');
$(document).unbind('keydown');
ตรวจสอบโค้ดที่นี่ http://pastebin.com/pVNMqyui โค้ดนี้มาจากเวอร์ชันพัฒนาของ Ideal Forms http://code.google.com/p/idealforms ที่ฉันกำลังจะออกเร็วๆ นี้ พร้อมรองรับคีย์บอร์ด
มีความคิดเห็นใดบ้างว่าทำไมสิ่งนี้ถึงใช้งานไม่ได้?
แก้ไข: แก้ไขแล้ว!
พบคำตอบในโพสต์นี้ แท็ก jquery link เปิดใช้งานปิดการใช้งาน
var disableScroll = function(e){
if (e.keyCode === 40 || e.keyCode === 38) {
e.preventDefault();
return false;
}
};
// And then...
events.focus: function(){ $(window).on('keydown', disableScroll); }
events.blur: function(){ $(window).off('keydown', disableScroll); }
มันได้ผล!
event.preventDefault();
ในตัวจัดการสำหรับเหตุการณ์ใด ๆ ที่อาจทำให้หน้าต่างเลื่อน... - person Aaron   schedule 13.12.2011