[英]Meteor event fires the wrong method
按下按鈕CLEAR
時,此Meteor客戶端代碼會在瀏覽器控制台上顯示Check entries
但僅當單擊INFO
按鈕且plate
為null時才預期觸發。
我做錯了什么以及如何解決? 謝謝
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')});
};
<body>
<div id="main">
<div id="content">
<form>
<button type="submit" style="display:none"></button>
{{> content}}
{{> footer}}
</form>
</div>
</div>
</body>
<template name="content">
<input type="text" id="plate" autocomplete="off">
</template>
<template name="footer">
<footer>
<button id="clear">CLEAR</button>
<button id="info">INFO</button>
</footer>
</template>
通常,您可能希望使用Meteor表單提交功能來處理此問題( 請參閱https://www.meteor.com/tutorials/blaze/forms-and-events ),但是您的設置有些奇怪,因為按鈕是與表格所使用的模板不同。
在這里,我可能會保留整體結構,並在每個事件處理程序的頂部添加一個“ 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();
}
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.