2016-12-07 69 views
0

当我将脚本代码放置在文本框上方时,它不起作用,但是如果我将代码放置在输入字段下面,那么它就可以工作。只有在输入框下面放置脚本代码时,Keydown脚本才能正常工作?

<script src="js/jQueryv3.1.1.js" type="text/javascript"></script> 

<script> 
$("input").keydown(function(e){ 
    alert(); 
}); 
</script> 

<input type="number" id="phoneNo" /> 

不起作用

但低于WORKS

<script src="js/jQueryv3.1.1.js" type="text/javascript"></script> 

<input type="number" id="phoneNo" /> 

<script> 
$("input").keydown(function(e){ 
    alert(); 
}); 
</script> 
+1

你忘了问一个问题。但无论如何,在第一个浏览器在输入元素被分析之前执行脚本*,所以'$(“input”)'找不到它。如果您想将上面的脚本放在上面,您必须使用文档就绪处理程序来延迟执行任何试图访问DOM元素的代码。 – nnnnnn

+0

@phpNoob这是你需要查看jQuery的**。load(),.ready()**事件的地方。 – Jai

+0

谢谢你做到了 – phpNoob

回答

2

与$(文件)。就绪包装你的代码()像:

$(function() { 
    $("input").keydown(function(e){ 
     alert(); 
    }); 
}); 

$(document).ready(function() { 
    $("input").keydown(function(e){ 
     alert(); 
    }); 
}); 

的jQuery无法找到输入元素,当你日前将其定义e输入框,但是当你在输入框后面写同一个输入框时,它会得到关于输入框的信息。

希望它能帮助你。

0

假设你要附加一个处理程序的alreadt定义的元素,你可以使用

$("input").keydown(function(e){ 
    alert(); 
}); 

你有已使用。

但是,如果要附加一个事件处理程序的动态元素(一​​个正在创建以后),你可以使用:

$(document).on('keydown', 'input', function(e){ 
    alert(); 
}); 
+0

OP的代码不包含任何动态创建的元素。 – nnnnnn