此Meteor客户端代码在按下CLEAR
按钮时,浏览器控制台会打印Check entries
,但只有在点击INFO
按钮时才会触发,并且仅在{{1}时触发是空的。
我做错了什么以及如何解决? THX
plate
Template.body.events({
'submit form': function (event) {
event.preventDefault();
footerInfo();
}
});
Template.footer.events({
'click #clear': () => {
Session.set('busy', false);
document.getElementById('plate').value = '';
Session.set('plate', '');
searching = '';
},
'click #info': () => {
footerInfo();
}
});
footerInfo = () => {
let plate = document.getElementById('plate').value;
if (!plate) {
console.log('Check entries'); //<-- prints even when CLEAR is clicked.
Session.set('busy', false);
return;
}
Session.set('plate', plate);
let doc = myCol.findOne({plate: Session.get('plate')});
};
答案 0 :(得分:0)
一般情况下,您可能希望使用Meteor表单提交功能来处理此问题(cf https://www.meteor.com/tutorials/blaze/forms-and-events),但您的设置有点奇怪,因为按钮与表单位于不同的模板中。< / p>
在这里,我可能会保留整体结构,并在每个事件处理程序的顶部添加“event.preventDefault()”。
如果由于某些原因不起作用,还要添加“event.stopImmediatePropagation()”。
但我认为应该这样做:
Template.footer.events({
'click #clear': (event) => {
event.preventDefault();
Session.set('busy', false);
document.getElementById('plate').value = '';
Session.set('plate', '');
searching = '';
},
'click #info': (event) => {
event.preventDefault();
footerInfo();
}
});