jQuery keydown事件

时间:2013-08-22 05:04:01

标签: jquery keydown

<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,但不适用于我的开发机器。

提前致谢...

2 个答案:

答案 0 :(得分: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));
}

答案 1 :(得分: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