简体   繁体   中英

Event Code Behaves Differently in Different Browsers

This Meteor client code has two buttons. Clicking the CLEAR button prints the following to the console:
Chrome: 'footer clear'
Firefox: 'form submitted' console also gives "ReferenceError: event is not defined"

How can I fix this so that it prints "footer clear" in all browsers? thx

Template.footer.events({
  'click #clear': () => {
    event.preventDefault();
    console.log('footer clear');  //<---------- fired in Chrome
  },
  'click #info': () => {
    event.preventDefault();
    console.log('footer info');
  }
});

Template.body.events({
  'submit form': function (event) {
    event.preventDefault();
    console.log('form submitted');  //<---------- fired in Firefox
  }
});
<head>
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>
<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="plateNum" autocomplete="off">
</template>
<template name="footer">
  <footer>
    <button id="clear">CLEAR</button>
    <button id="info">INFO</button>
  </footer>
</template>

You need to pass the event as a parameter to your click handlers:

Template.footer.events({
  'click #clear': (event) => {
    event.preventDefault();
    console.log('footer clear');  //<---------- fired in Chrome
  },
  'click #info': (event) => {
    event.preventDefault();
    console.log('footer info');
  }
});

Chrome clearly has a global variable called 'event', but Firefox is fussy about it.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM