在textarea中检测DEL键的相同代码不能在我的计算机上运行?

时间:2014-03-08 16:53:06

标签: javascript jquery

我想检测用户何时按下Delete键并找到了教程here

代码在jsfiddle.net中效果很好,这就是链接 - http://jsfiddle.net。 我将相同的代码复制到我的计算机上,然后我对它进行了测试,但它没有达到标记。

我在这里发布我的代码:

<html>

<script src="./jquery-1.10.2.min.js"></script> 


<body>
<script language="javascript" type="text/javascript">

var specialChars = {
            27: "esc", 9: "tab", 32: "space", 13: "return", 8: "backspace", 145: "scroll", 20: "capslock", 144: "numlock",
            19: "pause", 45: "insert", 36: "home", 46: "del", 35: "end", 33: "pageup", 34: "pagedown",
            37: "left", 38: "up", 39: "right", 40: "down", 109: "-",
            112: "f1", 113: "f2", 114: "f3", 115: "f4", 116: "f5", 117: "f6",
            118: "f7", 119: "f8", 120: "f9", 121: "f10", 122: "f11", 123: "f12", 191: "/"
        };

function chromeKeyPress(i,e){
    e.type="chromekeypress";
    e.which = 0;
    handleKey(e);
}
function handleKey(e) {
    $("#r").html($("#r").html() + "\n" +
        e.type + "\n" +
        "  which: " + e.which + " == " + String.fromCharCode(e.which) + "\n" +
        "  keyCode: " + e.keyCode + " == " + String.fromCharCode(e.keyCode) + "\n" +
     "");
}

$("textarea").keydown(function(e) {
    if (specialChars[e.keyCode])
    {
        $("textarea").trigger("chromekeypress", e);

        $("textarea").unbind("keypress");
        setTimeout(function(){ $("textarea").bind("keypress", handleKey); },10);
    }
});
$("textarea").keypress(handleKey);
$("textarea").bind("chromekeypress", chromeKeyPress);

</script>


<textarea></textarea>

<pre id="r"></pre>


</body>
</html>                                                                            

我关联了jqueryjquery-1.10.2.min.js。 我的javascript代码有什么问题。

2 个答案:

答案 0 :(得分:3)

您可以将代码包装在DOM ready handler $(document).ready(function() {....});或更短的$(function) {...});中,以确保在执行jQuery代码之前已正确加载所有DOM元素:

$(function() {
    // Your jQuery code here
});

您的代码适用于jsFiddle,因为当您从jsFiddle

中包含jQuery时,上述任务已自动完成

答案 1 :(得分:0)

将您的代码放入准备好的事件

$( document ).ready(function() {
    // Handler for .ready() called.
});