Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/424.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 流星事件触发错误的方法_Javascript_Meteor - Fatal编程技术网

Javascript 流星事件触发错误的方法

Javascript 流星事件触发错误的方法,javascript,meteor,Javascript,Meteor,此Meteor客户端代码当按下按钮清除时,浏览器控制台将打印检查条目,但仅当单击信息按钮且仅当标牌为空时才会触发。 我做错了什么?如何修复?thx Template.body.events({ 'submit form': function (event) { event.preventDefault(); footerInfo(); } }); Template.footer.events({ 'click #clear': () => { Session

此Meteor客户端代码当按下按钮
清除
时,浏览器控制台将打印
检查条目
,但仅当单击
信息
按钮且仅当
标牌
为空时才会触发。
我做错了什么?如何修复?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您是对的<代码>“提交表单”同时启动了两个按钮。但这怎么能解决呢。在
提交表单
事件中添加条件,还是有更好的方法?