onkeypress文本框问题

时间:2012-04-18 16:55:29

标签: javascript jquery

我有这个:

<input type="text" ID="txtMy" name="txtMy" onkeypress="initialize();"/>

在我的.js文件中,我有:

initialize()
{
    var x = $("#txtMy").val();
}

但是,如果我的文本框中有'2',然后我输入4,则x的值仍为2.如何解决此问题?

5 个答案:

答案 0 :(得分:1)

您在onkeypress中初始化的拼写与声明(inititalize)不符。

答案 1 :(得分:1)

使用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调用等...),您可以使用jQuery on

$(function(){
  $("body").on("keyup","#txtSearchKey",function (event) {
    alert($(this).val())
  });
});

答案 2 :(得分:1)

keydownkeypress事件都在输入的密钥实际出现在文本框中之前执行。如果您想在键出现后获取输入的新值,请改为使用keyup事件。

<input type="text" ID="txtMy" name="txtMy" onkeyup="initialize();"/>

initialize()
{
    var x = $("#txtMy").val();
}

您应该考虑使用.on()在javascript中绑定您的事件处理程序,因为您仍在使用该库。保持你的逻辑(javascript)与你的视图(html)分开是一个很好的习惯。

答案 3 :(得分:0)

而不是标记事件处理程序,您可以使用jquery:

var x;

$("#txtMy").on("keyup", function(){
     x = $(this).val();
     alert(x);
})

答案 4 :(得分:0)

一些事情:

  1. 使用keyup事件。 keypress在录制角色之前开火。
  2. 您的initialize()函数在HTML代码段中拼写错误。
  3. 请参阅http://jsfiddle.net/8XTLW/1/

    处的工作jsfiddle