Meteor 控制文本字段中的复制和粘贴

Meteor controlling copying and pasting in a text field

我试图阻止在我的 Meteor 应用程序模板中的用户名字段中复制和粘贴空格,但我总是收到如下所示的错误,有人可以告诉我我做错了什么/遗漏了什么吗?还有其他方法可以控制粘贴在 Meteor 模板文本字段中的内容吗?谢谢

        Template.UserRegisteration.events({
            'input #username':function(e,t){     
                 this.value = this.value.replace(/\s/g,'');
            }   
        });

错误:

Uncaught TypeError: Cannot read property 'replace' of undefined

this是上下文是input id="username字段所在的数据上下文。

要获取字段的 DOM 元素,请使用 e.currentTarget 而不是 this

以下示例说明如何提取和设置 Meteor 事件中 DOM 元素的值:

https://www.meteor.com/try/4

Template.body.events({
  "submit .new-task": function (event) {
    // This function is called when the new task form is submitted

    var text = event.target.text.value;

    Tasks.insert({
      text: text,
      createdAt: new Date() // current time
    });

    // Clear form
    event.target.text.value = "";

    // Prevent default form submit
    return false;
  }
});

在 Meteor 事件块中,"this" 不是 DOM 元素,因此您不能对其调用值。

正如 Akshat 提到的获取字段 DOM 元素使用 e.currentTarget 而不是这个,回到你的问题代码示例,请尝试以下

    Template.UserRegisteration.events({
        'input #username':function(e,t){     
             var text = e.currentTarget.value;
             e.currentTarget.value = text.replace(/\s/g,'');
        }   
    });