【问题标题】:jQuery .keyPress() - How to get value of input which triggered event?jQuery .keyPress() - 如何获取触发事件的输入值?
【发布时间】:2011-03-27 03:47:42
【问题描述】:

尝试做一些 jQuery 验证(没有插件 - 请不要回答“只需使用 validate-js 插件”)。

我正在为文档准备好的每个“必填字段”连接一个客户端事件处理程序keypress

$(document).ready(function() {
  $('#myform input.required').each(function() {
    $(this).keypress(onRequiredFieldKeyPress);
  });
});

在每次按键时正确触发此事件:

function onRequiredFieldKeyPress() {
   if ($(this).val().trim() == '') {
      $(this).next('em').html('*').show(); // show req field indicator
   } else {
      $(this).next('em').html('*').hide(); // hide req field indicator
   }
}

但是 $(this).val() 始终为空/空。看起来它传递了一个“HTMLInputElement”,这是我所期望的,但几乎就像我必须将其 project 到其他一些 jQuery 类型中?

基本上我正在尝试这样做:在我已连接的任何字段(都是输入元素)的按键事件中,调用该函数。在该函数中,如果该字段的值为 ''(空),则显示一个隐藏字段,该字段显示必填字段指示符。

我并不真正关心 哪个 实际元素触发了按键,因为我的逻辑行为将是相同的。我只需要获取实际值。

我错过了什么吗?

【问题讨论】:

    标签: javascript jquery html keypress onkeypress


    【解决方案1】:

    因为您正在使用按键事件。按键有 3 个阶段:
    1. 按下键:按下键时
    2. 按键保持:按键被按住
    3. key up: key is release
    在您的情况下,可以使用 keyup 事件解决问题

    $(document).ready(function() {
      $('#myform input.required').each(function() {
        $(this).keyup(onRequiredFieldKeyPress);
      });
    });
    

    【讨论】:

      【解决方案2】:

      尝试使用 event.currentTarget,其中 event 是函数的第一个参数。

      请看这里:http://api.jquery.com/event.currentTarget

      【讨论】:

      • 返回与 (this)... (HtmlInputElement) 相同的内容。我认为我得到了正确的东西,只是不知道如何从按键事件中获取值。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-27
      • 2011-03-23
      • 1970-01-01
      • 1970-01-01
      • 2015-06-17
      相关资源
      最近更新 更多