title: VueJS keyup handler executed by previous onclick handler
body: <p>Link to codepen reproducing the issue</p>
  
  <p><a href="https://codepen.io/anon/pen/dmGoPL" rel="nofollow noreferrer">https://codepen.io/anon/pen/dmGoPL</a></p>
  
  <p>I have a text field called search_val with a watcher attached. The text field contains a v-on keyup attribute to detect when the "Enter" key is pressed. The value of the text field is submitted via AJAX by the watcher, or by the enter key. When the result of the AJAX call is returned it is stored and the #my-results div becomes visible. A button with a v-on click directive clears the data and a select() call selects the search_val textfield.</p>
  
  <p>If I <strong>click</strong> the Hide Results button, the results are hidden and the search_val text field is selected, as expected. However if I <strong>tab across</strong> to the Hide Results button, and press enter, it hides the results and selects the search_val text field, but also triggers the v-on keyup method, resubmitting the search. How do I stop the keyup handler being resubmitted once I select() the search_val textfield? Thanks in advance.</p>
  
  <p><strong>HTML</strong></p>
  
  <pre><code>&lt;div id='my-app'&gt;
    &lt;input type='text' ref='text_search_val' v-model='search_val' v-on:keyup.enter="search"/&gt;
    &lt;div id='my-results' v-show="_.size(result)"&gt;
      &lt;button type='button' v-on:click="hideResults"&gt;Do something and hide results&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  </code></pre>
  
  <p><strong>JS</strong></p>
  
  <pre><code>var app = new Vue({
          el: '#my-app',
          data: {
              search_val: '',
              Qty: "",
              result: {}
          },
          watch : {
              search_val: function(new_search_val, old_search_val) {
                              this.search();
              }
          },
          methods: {
              hideResults: function (event) {
                  this.result = {};
                  this.$refs.text_search_val.select();
              },
                          search: function() {
                  if (this.search_val.length &gt; 0) {
                      this.result = {};
                      this.ajaxCall();
                  }                           
                          },
              ajaxCall: _.debounce(
                  function () {
                      var vm = this;
                      axios.get('https://reqres.in/api/users', {
                          params: {
                              search_val: vm.search_val
                          }
                      })
                      .then(function (response) {
                          vm.result = response.data;
                          vm.$nextTick(function () {
                            vm.$refs.number_qty.select();
                          });
                      })
                      .catch(function (error) {
                          console.log('Could not reach the API. ' + error)
                      })
                  },
                  // This is the number of milliseconds we wait for the
                  // user to stop typing.
                  500
              )
          }
      });
  </code></pre>