Examples of methods to prevent repeated clicks using pointer-events

小云云
Release: 2017-12-19 09:57:30
Original
1732 people have browsed it

We always encounter the problem of repeated clicks on the front end. Due to network reasons, if the user cannot get feedback in time, he is likely to choose to click again, so at this time, two repeated requests will be sent to the back end. This is likely to cause serious problems, especially when posting, two pieces of duplicate data may be added. This article mainly introduces you to the relevant information about CSS using pointer-events to prevent repeated clicks. The article introduces it in great detail through sample code. It has certain reference learning value for everyone's learning or understanding. I hope it can help everyone.

Before I encountered this situation, I usually made a canRequest variable before the js request. Since the request is asynchronous, I would set the variable to false after the request started. When the request ended , the variable must be set to true regardless of success or failure. The simple code is as follows:

var canRequest = true
function postData () {
  if (!canRequest) return
  fetch(url)
  .then(res => {
    canRequest = true  
  })
  .catch(e => {
    canRequest = true
  })
  canRequest = false
}
Copy after login

There is nothing wrong with this, but considering that the button generally needs to be grayed out after clicking, I found a How to prevent repeated clicks from the css level.

The following is an example of obtaining the SMS verification code:

<p id="count">获取验证码</p>
Copy after login
body {
    display: flex;
    height: 100vh;
}
#count {
    margin: auto;
    padding: 10px;
    width: 100px;
    border: 1px solid;
    text-align: center;
    cursor: pointer;
    border-radius: 4px;
}
.disable {
    pointer-events: none;
    color: #666;
}
Copy after login
const count = document.getElementById('count')
const tip = count.textContent
count.onclick = e => {
    console.log(111)
    count.classList.add('disable')
    count.textContent = 10
    var id = setInterval(() => {
        count.textContent--
        if (count.textContent <= 0) {
            count.classList.remove('disable')
            count.textContent = tip
            clearInterval(id)
        }
    }, 1000)
}
Copy after login

Related recommendations:

a: Solution to invalid click of active plus animation

css3 click to display ripple special effect

JS click link to switch to display hidden content implementation method

The above is the detailed content of Examples of methods to prevent repeated clicks using pointer-events. For more information, please follow other related articles on the PHP Chinese website!

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template