-3

我有这个:

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

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

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

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

4

5 回答 5

1

您在 onkeypress 中的 initialize 拼写与声明 ( ) 不匹配inititalize

于 2012-04-18T16:58:51.167 回答
1

采用keyup

以下是您如何以不显眼的方式做到这一点。

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())
  });
});
于 2012-04-18T16:59:49.337 回答
1

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

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

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

您应该考虑使用.on()在 javascript 中绑定事件处理程序,因为无论如何您都在使用该库。将逻辑(javascript)与视图(html)分开是一个好习惯。

于 2012-04-18T17:05:50.767 回答
0

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

var x;

$("#txtMy").on("keyup", function(){
     x = $(this).val();
     alert(x);
})
于 2012-04-18T17:00:05.660 回答
0

一些东西:

  1. 使用keyup事件。keypress在记录角色之前开火。
  2. 您的 HTML 片段中的 initialize() 函数拼写错误。

请参阅http://jsfiddle.net/8XTLW/1/上的工作 jsfiddle

于 2012-04-18T17:03:22.227 回答