我正在尝试使用jQuery学习ajax调用。但我在使用jQuery本身时陷入了一个非常基本的问题。 Follwing是我的代码,
<head>
<script type="text/javascript" src="jquery-1.6.2.js"></script>
<script language="javascript">
$(document).ready(function()
{
alert("Hello World!!!!")
$("#txt1").onkeydown(function(){
alert("Event Fired")
$("#add").load("newjsp.jsp?q="+this.value)
})
})
</script>
</head>
<body>
<form>
Comment: <input type="text" id="txt1"></input>
</form>
<p><p></p></p>
<form id="add">
</form>
</body>
在输入文本框中的任何键时,不会触发事件onkeydown(因为没有警告“事件被触发”)。我不明白可能是什么问题。请帮忙。
谢谢Rishabh
答案 0 :(得分:3)
使用keydown
代替onkeydown
。
.keydown( function(){...} )
是.bind("keydown", function){ ... })
的缩写。
答案 1 :(得分:3)
如果您希望一直向前,请将keypress
代替onkeydown
与keyup
事件的一次性绑定结合使用
$(document).ready(function () {
alert("Hello World!!!!");
$("#txt1").keypress(function () {
$("#txt1").one('keyup', function () {
alert("Event Fired");
$("#add").load("newjsp.jsp?q=" + this.value);
})
})
});
jsfiddle中的实时示例,(点击运行开始)。
此可以避免处理 CTRL 和 Shift 这样的键,并且可以避免自动重复键。
注意:您还应该过滤掉网址中不允许的所有字符。 ;)
<强>按键强>
在插入实际字符时触发,例如,文本输入。当用户按下键时,它会重复。
jQuery.one 将处理程序附加到元素的事件。每个元素最多执行一次处理程序。 link