An article teaches you how to implement VUE multiple DIVs and button binding enter events

An article teaches you how to implement VUE multiple DIVs and button binding enter events

There is currently a requirement that an operation is performed when the OK button is clicked or the keyboard enter is pressed, which is needed in many places.

I tried several methods but none of them worked.

First, I bound the @keyup.enter method to the div (button as well), but it had no effect at all. Then I followed the method on the Internet and wrote it like this:

<div class="btn submit" @keyup.enter="submit" @click="submit">Confirm (Ent)</div>
created(){
   document.onkeydown = function(e) {
     if(e.keyCode == 13){
       console.log("Call the method that needs to be executed"); 
     }
   }
 },

This can indeed implement the carriage return event, but it is global, that is, when you press the enter key in other components, the carriage return event here will also be called. This method does not work.

Then I did this:

1. Add an <input> tag between the OK button and the Cancel button (placing it in the middle can serve as a spacer between the buttons, so there is no need to write margin-left), and then add the @keyup.enter event to this input tag;

<template slot="footer">
        <div class="dialog-footer dis-flex">
          <div class="btn cancel" @click="showDialog = false">Cancel (Esc)</div>
          <input
            type="text"
            ref="inputdata"
            class="hiddenIpt"
            @keyup.enter="submit"
          />
          <div class="btn submit" @click="submit">
            Confirm (Ent)
          </div>
        </div>
</template>

2. Write a listener to automatically focus the input box when the pop-up window is opened (inputdata is bound to the input with ref).

watch:
    showDialog() {
      if (this.showDialog) {
        //this.$refs.inputdata.focus(); Wrong way to write this.$nextTick(() => {//Correct way to write this.$refs.inputdata.focus();
        });
      }
    },
  },

3. Hide the input box (set the width to be used as the interval between the OK button and the Cancel button.)

.hiddenIpt {
    width: 2rem;
    opacity: 0;
  }

This is the perfect solution. If you have a better solution, welcome to communicate with us.

Summarize

This article ends here. I hope it can be helpful to you. I also hope that you can pay more attention to more content on 123WORDPRESS.COM!

You may also be interested in:
  • Vue2.x obtains data from QQ music API through the backend interface proxy
  • Detailed explanation of proxy access to data in Vue source code
  • VUE Getting Started Learning Event Handling
  • Vue3 Vue Event Handling Guide
  • Detailed explanation of VUE's data proxy and events

<<:  dl, dt, dd list label examples

>>:  How to create your own Docker image and upload it to Dockerhub

Recommend

How to periodically clean up images that are None through Jenkins

Preface In the process of continuous code deliver...

Hidden overhead of Unix/Linux forks

Table of contents 1. The origin of fork 2. Early ...

Introduction to the use of anchors (named anchors) in HTML web pages

The following information is compiled from the Int...

Solution to the IP address not being displayed under Linux

Table of contents Preface Solution: Step 1 Step 2...

8 tips for Vue that you will learn after reading it

1. Always use :key in v-for Using the key attribu...

Solution to Docker pull timeout

Recently, Docker image pull is very unstable. It ...

How to set up remote access to a server by specifying an IP address in Windows

We have many servers that are often interfered wi...

Some indicators of excellent web front-end design

The accessibility of web pages seems to be somethi...

How many times will multiple setStates in React be called?

Table of contents 1. Two setState, how many times...

Troubleshooting the reasons why MySQL deleted records do not take effect

A record of an online MySQL transaction problem L...

Solutions to Mysql index performance optimization problems

The optimization created by MySQL is to add index...

How to view the creation time of files in Linux

1. Introduction Whether the creation time of a fi...

Solution to Ubuntu cannot connect to the network

Effective solution for Ubuntu in virtual machine ...