Javascript 流星事件触发错误的方法
此Meteor客户端代码当按下按钮Javascript 流星事件触发错误的方法,javascript,meteor,Javascript,Meteor,此Meteor客户端代码当按下按钮清除时,浏览器控制台将打印检查条目,但仅当单击信息按钮且仅当标牌为空时才会触发。 我做错了什么?如何修复?thx Template.body.events({ 'submit form': function (event) { event.preventDefault(); footerInfo(); } }); Template.footer.events({ 'click #clear': () => { Session
清除
时,浏览器控制台将打印检查条目
,但仅当单击信息
按钮且仅当标牌
为空时才会触发。我做错了什么?如何修复?thx
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')});
};
Template.body.events({
“提交表单”:函数(事件){
event.preventDefault();
footerInfo();
}
});
Template.footer.events({
'单击#清除':()=>{
Session.set('busy',false);
document.getElementById('plate')。值=“”;
会话集('板','');
搜索=“”;
},
'点击#信息':()=>{
footerInfo();
}
});
footerInfo=()=>{
设plate=document.getElementById('plate')。值;
如果(!板){
console.log('Check entries');//content}
{{>页脚}
清楚的
信息
一般来说,您可能希望使用Meteor表单提交功能来处理此问题(c.f.),但您的设置有点奇怪,因为按钮位于与表单不同的模板中
在这里,我可能会保留整体结构,并在每个事件处理程序的顶部添加一个“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();
}
});
我发誓我以前见过这个代码。你在另一个问题中发布了它吗?或者这是家庭作业?@zim不是家庭作业。这两个按钮都在一个表单中,我想你没有正确处理表单提交。简化注释掉您的逻辑,在每个事件处理程序中只放控制台日志,以查看是否只有预期的处理程序在按按钮时被调用,或者两者都被调用。添加type
…
@zim您是对的<代码>“提交表单”同时启动了两个按钮。但这怎么能解决呢。在提交表单
事件中添加条件,还是有更好的方法?