Meteor dont detect binded event from helper return

hi everybody,

I try to modify real-time input but meteor dont see event binded on input text value

//i pick tje last element of my mongodb and insert into template, try to bind event on input id, manually it work for event detect … anyone have an idea ?

Thankks

client.js
`Template.calculator.helpers({
myHelperpolosellinput() {
if(Orderbookpolo.findOne({type: “sell”},{sort: {createdAt:-1}})){
var lastsellpolo = new ReactiveVar("");
lastsellpolo.set(Orderbookpolo.findOne({type: “sell”},{sort: {createdAt:-1}}));
//console.log(lastsellpolo.curValue.rate);
return lastsellpolo.curValue.rate;
}
}
});

Template.calculator.events({
‘keyup input#buyrate’ : function (evt, template) {
evt.preventDefault();
return console.log(“yolo”);
},
‘change input#buyrate’ : function (evt, template) {
evt.preventDefault();
return buildcalc();
},
‘propertychange input#buyrate’ : function (evt, template) {
evt.preventDefault();
return console.log(“yolo”);
},
‘propertychange input#buyrate’ : function (evt, template) {
evt.preventDefault();
return console.log(“yolo”);
},
‘paste input#buyrate’ : function (evt, template) {
evt.preventDefault();
return console.log(“yolo”);
}
});
`

calculator.html
<template name="calculator"> <input class="targetbuy" id="buyrate" type="text" value="{{myHelperpolosellinput}}"/> </template>

Tried to use : https://www.meteor.com/tutorials/blaze/forms-and-events

console.log dont incoming when template helper insert new value in my input (updating input value works fine) :confused:

Template.calculator.events({ change input#buyrate' : function (evt, template) { evt.preventDefault(); const target = evt.target; //const text = target.buyrate.value; return console.log(target); } });

From your code sample it looks like you’re trying to show the retrieved rate in the input, and use console.log to show that events are working properly. There are a few issues in your code preventing things from working properly. A few quick things to note:

  • You shouldn’t return a console.log statement
  • You don’t need to use a ReactieVar for what you’re trying to do

Here’s a quick re-write of your code (more or less) that shows the rate in the input box, and gets the event console.log's working (to show that the events are working).

main.html:

<body>
  <input class="targetbuy" id="buyrate" type="text"
    value="{{myHelperpolosellinput.rate}}"/>
</body>

main.js:

Template.body.helpers({
  myHelperpolosellinput() {
    return Orderbookpolo.findOne(
      { type: 'sell' },
      { sort: { createdAt: -1 }}
    );
  }
});

Template.body.events({
  'keyup input#buyrate'(event, template) {
    event.preventDefault();
    console.log('yolo');
  },
  'change input#buyrate'(event, template) {
    event.preventDefault();
  },
  'propertychange input#buyrate'(event, template) {
    event.preventDefault();
    console.log('yolo');
  },
  'propertychange input#buyrate'(event, template) {
    event.preventDefault();
    console.log('yolo');
  },
  'paste input#buyrate'(event, template) {
    event.preventDefault();
    console.log('yolo');
  }
});

thanks for your back, i dont gets the event console.log’s working, but update input value works fine :confused:

Something else might be hijacking your events. The console.log statements should work properly, as long as your events are being triggered. Do you have anything else defined in your templates that could be hijacking events? Maybe start with a new empty app and just add in the code I pasted in (along with your collection code), and verify the console.log statements are working.