前言

用户通过扫码枪扫码输入信息的时候,输入框拿到的数据是完全错误的,连位数都对不上😱

问题

用户在使用扫码枪扫码的时候输入法是中文的

需求

输入框从扫码枪获取的数据是对的而且能够显示明文信息

解决

input标签类型改为password,使用块级元素显示明文

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
    <style>
      .input-wrap {
        position: relative;
      }
      .plaintext {
        position: absolute;
        top: 0;
        left: 0;
        display: flex;
        align-items: center;
        &::after {
          content: '';
          border-right: 1px solid #000;
          height: 20px;
          animation: .5s cursor infinite;
        }
      }
      @keyframes cursor {
        0% {
          opacity: 0;
        }
        50% {
          opacity: 1;
        }
        100% {
          opacity: 0;
        }
      }
      #password {
        color: transparent;
      }
      #password,
      .plaintext {
        height: 40px;
        width: 200px;
        border-radius: 10px;
        box-sizing: border-box;
        padding: 0 10px;
      }
    </style>
  </head>
  <body>
    <div class="input-wrap">
      <div class="plaintext" id="plaintext" onclick="handleClick()"></div>
      <input
        type="password"
        placeholder="请输入信息"
        id="password"
        oninput="handleChange(event)"
        autofocus
      />
    </div>
    <script>
      const password = document.getElementById("password");
      const plaintext = document.getElementById("plaintext");
      const handleClick = () => {
        password.focus();
      };
      const handleChange = (event) => {
        const val = event.target.value;
        plaintext.innerText = val;
      };
    </script>
  </body>
</html>

效果

扫码枪扫码输入的一些趣事_JavaScript

最后

一般也就仓储系统会遇到这种场景😆