MChan
MChan

Reputation: 7202

Meteor controlling copying and pasting in a text field

I am trying to prevent copying and pasting white spaces in the username field inside my Meteor app template but I am always getting an error as shown below, can someone please tell me what I am doing wrong / missing and is there any other way to control content pasted in a text field in Meteor template? Thanks

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

Error:

Uncaught TypeError: Cannot read property 'replace' of undefined

Upvotes: 1

Views: 174

Answers (3)

Mahmoud Metwally
Mahmoud Metwally

Reputation: 990

As Akshat mentioned to get field DOM element use e.currentTarget instead of this, back to your question code sample please try the following

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

Upvotes: 1

Salvi
Salvi

Reputation: 1

The following example sets out how to extract and set the value of a DOM element within a Meteor event:

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;
  }
});

Within a Meteor events block, "this" is not the DOM element so you cannot call a value on it.

Upvotes: 0

Tarang
Tarang

Reputation: 75955

this is the context is the data context where the input id="username field is.

To get the field's DOM element use e.currentTarget instead of this.

Upvotes: 2

Related Questions