我有这个ajax调用,假设在特定文本框上按下某个键时运行。一旦进入通话,它就会运行一个触发警报的功能。但是,它不起作用。也许是因为我使用旧的论坛帖子作为参考来编写电话。假设,我在我的测试中调用了jquery库,但是我没有在这里发布它。
这是我到目前为止所尝试的:
<script>
$("#<% =tb.ClientID%>").keydown
(
function ()
{
debugger; alert("hello");
}
);
</script>
<body>
<asp:TextBox Id = "tb" runat = "server"/>
</body>
我是这些电话的新手。我对js函数非常熟悉,但我从来没有这样做过。任何解释和建议,将不胜感激。
答案 0 :(得分:2)
HTML逐行处理。因此,当它处理script
标记的内容时,它还没有进一步处理任何内容,例如body
标记或其内容。
在script
内,您正在运行$("#<% =tb.ClientID%>")
。它会尝试按ID查找元素,但由于body
尚未处理,因此不会产生任何结果。如果没有结果,则无法为.keydown
设置侦听器。
在这种情况下,使用jQuery的$(document).ready
函数或其等价物变得非常重要且对代码至关重要。 $(document).ready
接受一个函数,它将等到DOM完全加载后再执行该代码。因此,将$("#<% =tb.ClientID%>").keydown....
放在$(document).ready
内将确保元素有机会在.keydown
侦听器附加到DOM之前进入DOM。
您可以找到$(document).ready()
here的文档。