javascript - 处理 `keyup` 事件时出错

标签 javascript meteor

我是 meteor 的新手,请任何人帮助我解决以下问题。

首先让我明确一下我在做什么项目。

我有一个存储用户详细信息的集合,所以我想编辑用户信息。我正在使用 iron-router,因此当我在 URL 中输入 user_id 时,它会在文本框中显示用户详细信息,以便我可以对其进行编辑。

当我点击“编辑”按钮时,我可以保存已编辑的用户详细信息,但我想自动更新详细信息,所以我尝试使用 keyup 事件,但它不起作用。

当我处理 keyup 事件而不是 submit 时出现以下错误:

Cannot read property 'value' of undefined at Object.keyup .sub

下面是我的js代码:

Router.route('/temp1/:_id', function () {
  var pid = this.params._id;
  this.render('temp1', {
    data: function () {
      return Dbs.findOne({ user_id: pid });
      Router.go("/temp1", {}, { id: pid });
    }
  });
});

Template.temp1.events({
  'keyup .sub'(event)  {
    const target = event.target;
    const user_id1 = target.user_id.value;
    const add1 = target.add.value;   
    const cont1 = target.cont.value;
    const pth1 = target.pth.value;

    var p = Dbs.findOne({ user_id: Router.current().params._id });
    Dbs.update({ _id: p._id }, {
      $set: {
        user_id: user_id1,
        cont: cont1,
        add: add1,
        pth: pth1
      }
    });
    console.log(user_id1);
    alert(user_id1);
  }
});

HTML代码:

  <form class="sub">
    <input type="text" name="user_id" value="{{user_id}}"/>
    <input type="text" name="add" value="{{add}}"/>
    <input type="text" name="cont" value="{{cont}}"/>
    <input type="text" name="pth" value="{{pth}}" />

    <!--<center><input type="submit" value="Submit" class="waves-effect #607d8b grey btn"></center>-->
 </form>

最佳答案

当您使用submit .sub 事件时 — 在您的处理程序中,event.targetform,这就是为什么构造像 target.user_id.value 正在工作。

当你使用 keyup.sub 事件时——这个 keyup 事件从它的 input 元素冒泡到表单,因此 event.target 将指向调度此事件的 input

有两种方法可以“解决”您的问题:

  1. 使用 event.currentTarget 而不是 event.target

  2. 替换这一行:

    const target = event.target;

    用这个:

    const target = $(event.target).closest('form').get(0);

    因此您的 target 变量将始终指向 form 元素。

关于javascript - 处理 `keyup` 事件时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46277326/

相关文章:

c# - 从 C# Web 表单应用程序启动 NodeJS 应用程序

使用 aldeed Simple Schema 包的 Meteor 动态模式

node.js - 用于获取订单的 eBay Fulfillment API

javascript - meteor 和 MongoDB。从集合中获取数据时遇到问题(查找两个日期之间的文档)

javascript - 计算过去30秒内接收到的数据数量

javascript - 如何通过自定义属性获取另一个元素内元素内的文本

javascript - 来自数据库的 Kendo 自动完成模板 img src

javascript - 更新 RethinkDB 中的对象数组

Javascript DOM 控制台浏览器

node.js - 如何在 Meteor 中更改或升级 Node.js 的版本