我有这样的:onkeypress事件文本框问题
<input type="text" ID="txtMy" name="txtMy" onkeypress="initialize();"/>
而在我的js文件我有:
initialize()
{
var x = $("#txtMy").val();
}
但是,如果我在文本框有 '2',然后我进入4 ,x的值仍然是2.如何解决这个问题?
我有这样的:onkeypress事件文本框问题
<input type="text" ID="txtMy" name="txtMy" onkeypress="initialize();"/>
而在我的js文件我有:
initialize()
{
var x = $("#txtMy").val();
}
但是,如果我在文本框有 '2',然后我进入4 ,x的值仍然是2.如何解决这个问题?
使用keyup
这里是你如何做到这一点的unobtrusive way。
HTML
<input type="text" id="txtMy" />
脚本
$(function(){
$("#txtMy").keyup(function (event) {
alert($(this).val())
});
});
工作示例:http://jsfiddle.net/VmELF/4/
如果你要绑定的功能,其被注入到DOM文本框在dom负载之后(可能通过Ajax调用等),你m AY使用jQuery on
$(function(){
$("body").on("keyup","#txtSearchKey",function (event) {
alert($(this).val())
});
});
您在onkeypress中的初始化拼写与声明不匹配(inititalize
)。
代替标记事件处理程序,你可以使用jQuery:
var x;
$("#txtMy").on("keyup", function(){
x = $(this).val();
alert(x);
})
删除了我以前的评论,因为您已经编辑了该问题并且使其无关紧要。 – 2012-04-18 17:02:01
有几件事情:
keyup
事件。 keypress
在录制角色之前开始播放。和keypress
事件工作的jsfiddle都执行之前输入的密钥实际上已经出现在文本框中。如果您想在密钥出现后获取输入的新值,请改为使用keyup
事件。
<input type="text" ID="txtMy" name="txtMy" onkeyup="initialize();"/>
initialize()
{
var x = $("#txtMy").val();
}
您应该考虑使用.on(),因为你使用的库反正在JavaScript绑定你的事件处理程序。保持你的逻辑(javascript)从你的视图(html)分离是一个很好的习惯。
尝试用'onkeyup'代替 – MilkyWayJoe 2012-04-18 16:59:03
使用内联属性来附加事件处理程序是不好的做法。如果你使用像jQuery这样的框架,那么真的没有理由这样做,因为它使整个绑定过程变得如此简单。 – 2012-04-18 17:00:11