2013-08-22 146 views
0
<script src="http://code.jquery.com/jquery-1.10.1.min.js"></script> 

sqHTML = "<div id=\""+sqStringTemp+"\" class=\"puzzlesquare\"><input type=\"text\" class=\"puzzlesquareinput\" maxlength=\"1\" style=\"text-transform: uppercase;\" onkeypress=\"foo(event)\"/></div>"; 
jQuery("#gridpuzzleouter").append(sqHTML); 

function foo(event) { 
    //console.log(event.charCode); 
    console.log(String.fromCharCode(event.charCode)); 
} 

//keydown event 
jQuery(".puzzlesquareinput").on('keydown', function() { 
    alert("keydown..."); 
}); 

我有一個奇怪的問題,事件沒有解僱。 JavaScript函數正常工作,並將密鑰輸出到控制檯。我想知道爲什麼keydown事件的jQuery沒有觸發。我的控制檯顯示沒有錯誤。 jQuery適用於jsFiddle,但不適用於我的開發機器。jQuery keydown事件

在此先感謝...

+0

未捕獲的ReferenceError:'sqStringTemp'未定義。另外,分享jsFiddle網址。 –

+0

代碼在上下文中,因此這些代碼不是完整的代碼,而是非常長的代碼。 – Giuseppe

回答

0

,當你把它包下jQuery(document).ready...方法它將工作。

$(document).ready(function() { 
    sqHTML = "<input type=\"text\" class=\"puzzlesquareinput\" maxlength=\"1\" style=\"text-transform: uppercase;\" onkeypress=\"foo(event)\"/>"; 
    jQuery("body").append(sqHTML); 

    foo = function (event) { 
     //console.log(event.charCode); 
     console.log(String.fromCharCode(event.charCode)); 
    } 

    //keydown event 
    jQuery(".puzzlesquareinput").on('keydown', function() { 
     alert("keydown..."); 
    }); 
}); 

入住這fiddle

+0

我相信這是正確的,但我看到工作小提琴但是在我的代碼中,它仍然不會因爲某種原因而導致我還沒有想出來...... – Giuseppe

+0

@ user2209542你可以檢查控制檯中的錯誤嗎? – Praveen

+0

控制檯沒有錯誤。 – Giuseppe

1

如果您有關於$(document).ready(),FOO()將是不確定的......試試這個,而不是...

改變這種代碼

function foo(event) { 
     //console.log(event.charCode); 
     console.log(String.fromCharCode(event.charCode)); 
} 

像這樣...

window.foo = function(event) { 
    //console.log(event.charCode); 
    console.log(String.fromCharCode(event.charCode)); 
}