เหตุการณ์การโทร jQuery เมื่อกดลงหรือกดคีย์

ฉันกำลังพยายามเปลี่ยนสีขององค์ประกอบ div บนคีย์ดาวน์และคีย์อัป แต่ดูเหมือนว่าฉันไม่สามารถทำให้มันใช้งานได้ ฉันได้ตรวจสอบทุกตัวอย่างที่ฉันพบบนอินเทอร์เน็ตแล้ว แต่ดูเหมือนว่ารหัสของฉันจะไม่ทำงาน

ตัวอย่างทั้งหมดที่ฉันพบดูเหมือนจะใช้ฟิลด์ข้อความอินพุตของแบบฟอร์มเป็นเป้าหมายสำหรับการกดปุ่ม ฉันไม่ต้องการที่จะทำเช่นนั้น นี่คือรหัสของฉัน:

$(document).keydown(function(e){
    if(e.which == 'A')
    {
        alert('key was pressed');
        $(#k1).css('background-color', "blue");
    }
});

ความคิดของฉันคือ $(document) ไม่ใช่สิ่งที่ถูกต้องที่จะมีเพราะไม่เคยมีการเรียกใช้ฟังก์ชัน แต่เนื่องจากตัวอย่างทั้งหมดที่ฉันพบใช้ช่องข้อความ ฉันจึงไม่รู้ว่าจะใส่อะไรลงไป


person brettgag    schedule 06.03.2013    source แหล่งที่มา
comment
คุณเคยลองกับ $("#k1") แล้วหรือยัง   -  person Roko C. Buljan    schedule 07.03.2013


คำตอบ (4)


สาธิตสด

$(document).keydown(function(e){
    if(e.which == 65){
        alert('Pressed key was: '+ e.which );
        $("#k1").css( { backgroundColor:"blue" } );
    }
});

หากคุณต้องการ $('input') แทนที่จะเป็น $(document) โปรดอย่าลังเลที่จะใช้
65 คือ event.which สำหรับ A

person Roko C. Buljan    schedule 06.03.2013

สองสามสิ่ง ประการแรก event.which จะส่งคืนตัวเลขที่เกี่ยวข้องกับคีย์ และประการที่สอง เป้าหมาย jquery ของคุณต้องเป็นสตริง ดังนั้นให้เปลี่ยน =='A' เป็น ==65 และ $(#k1) เป็น $("#k1") แล้วมันจะได้ผล นี่คือการสาธิต: http://jsfiddle.net/AeBtV/

js

$(document).keydown(function(e){
 if(e.which == 65)
 {
    alert('A key was pressed');
    $("#k1").css('background-color', "blue");
 }
});

หมายเหตุเกี่ยวกับหมายเลขรหัสกุญแจ:

ช่วงคือตั้งแต่ 65-90 สำหรับ A ถึง Z ดังนั้น A คือ 65, Z คือ 90 และ R คือ 82

person Travis J    schedule 06.03.2013
comment
ฉันสังเกตเห็นสิ่งนั้น แต่อย่างที่ฉันพูดไปก่อนหน้านี้ ฟังก์ชันนี้ไม่เคยถูกเรียกใช้ตั้งแต่แรก ฉันยังไม่บรรลุข้อผิดพลาดเหล่านั้นแม้ว่าฉันจะแก้ไขแล้วก็ตาม ปัญหาเกี่ยวข้องกับ 'เอกสาร' - person brettgag; 07.03.2013

ฉันติดกับดักเหตุการณ์ keyup และ keydown โดยใช้ .live:

$("#my_id").live('keydown',function(event) {

...

});

person Bob McCown    schedule 06.03.2013
comment
.live เลิกใช้แล้ว! และเหตุใดจึงช่วยในกรณีนี้? - person bfavaretto; 07.03.2013

เงื่อนไข which ของคุณไม่ถูกต้อง น่าจะ 65 อย่างที่คนอื่นบอก

http://api.jquery.com/keypress/

หากคุณเลื่อนลง คุณสามารถพิมพ์คีย์ใดๆ และดูค่าของแต่ละคีย์ได้

หรือคุณสามารถทำ

console.log(e.which);
person Ross Joo    schedule 06.03.2013