使用按键和或功能

发布于 2025-02-09 18:18:28 字数 2311 浏览 2 评论 0原文

当按下键盘上的“ Enter”按钮时,我要将我的应用程序配置为单击“ Enter” Div。我已经有Enter Div,当我使用鼠标单击它时,它可以正常工作。我相信我需要将按键功能与事件侦听器和逻辑或| |操作员。但是我无法正常工作,甚至不确定我是否朝着正确的方向发展,感谢您的帮助。我的代码如下。

let display = document.getElementById("display");
let validKeys = [
  "1",
  "2",
  "3",
  "4",
  "5",
  "6",
  "7",
  "8",
  "9",
  "0",
  "Enter",
  "Clear",
];
let pin = "";

document.getElementById("pin-pad").addEventListener("click", (event) => {
  if (!validKeys.includes(event.target.innerText)) {
    return;
  }

  if (event.target.innerText === "Enter") {
    window.electronAPI.sendPin(pin);
    return;
  }

  if (event.target.innerText === "Clear") {
    pin = display.value = "";
    return;
  }

  pin = pin + event.target.innerText;
  display.value = "*".repeat(pin.length);
});

///tests
const handlekeyUp = function (e) {
  e.stopPropagation();
  const input = document.getElementById("display");
  console.log(input, e.key, input.value);
  var reg = new RegExp("^[0-9]$");
  const number = document.querySelector(`[data-number="${e.key}"]`);

  if (reg.test(e.key)) input.value += e.key;
  if (number) number.style.backgroundColor = "#fff";
};

const handleKeyDown = (e) => {
  const number = document.querySelector(`[data-number="${e.key}"]`);
  if (!number) {
    return;
  }
  number.style.backgroundColor = "#eee";
};

document.addEventListener("keyup", handlekeyUp);

document.addEventListener("keydown", handleKeyDown);
<div id="container">
  <div id="wrapper">
    <input type="password" id="display" disabled />

    <div id="pin-pad">
      <div data-number="1">1</div>
      <div data-number="2">2</div>
      <div data-number="3">3</div>
      <div data-number="4">4</div>
      <div data-number="5">5</div>
      <div data-number="6">6</div>
      <div data-number="7">7</div>
      <div data-number="8">8</div>
      <div data-number="9">9</div>
      <div>Enter</div>
      <div data-number="0">0</div>
      <div>Clear</div>
    </div>
  </div>
</div>

I'm tying to configure my app to click "Enter" div, when the "Enter" button on the keyboard is pressed. I already have the Enter div and it works when I click it with the mouse. I believe I need to use the keypress function with event listener and the logical OR | | operator. but I could not get it working, not even sure if I am in the correct direction, Thanks alot for the help. My code is as follows.

let display = document.getElementById("display");
let validKeys = [
  "1",
  "2",
  "3",
  "4",
  "5",
  "6",
  "7",
  "8",
  "9",
  "0",
  "Enter",
  "Clear",
];
let pin = "";

document.getElementById("pin-pad").addEventListener("click", (event) => {
  if (!validKeys.includes(event.target.innerText)) {
    return;
  }

  if (event.target.innerText === "Enter") {
    window.electronAPI.sendPin(pin);
    return;
  }

  if (event.target.innerText === "Clear") {
    pin = display.value = "";
    return;
  }

  pin = pin + event.target.innerText;
  display.value = "*".repeat(pin.length);
});

///tests
const handlekeyUp = function (e) {
  e.stopPropagation();
  const input = document.getElementById("display");
  console.log(input, e.key, input.value);
  var reg = new RegExp("^[0-9]$");
  const number = document.querySelector(`[data-number="${e.key}"]`);

  if (reg.test(e.key)) input.value += e.key;
  if (number) number.style.backgroundColor = "#fff";
};

const handleKeyDown = (e) => {
  const number = document.querySelector(`[data-number="${e.key}"]`);
  if (!number) {
    return;
  }
  number.style.backgroundColor = "#eee";
};

document.addEventListener("keyup", handlekeyUp);

document.addEventListener("keydown", handleKeyDown);
<div id="container">
  <div id="wrapper">
    <input type="password" id="display" disabled />

    <div id="pin-pad">
      <div data-number="1">1</div>
      <div data-number="2">2</div>
      <div data-number="3">3</div>
      <div data-number="4">4</div>
      <div data-number="5">5</div>
      <div data-number="6">6</div>
      <div data-number="7">7</div>
      <div data-number="8">8</div>
      <div data-number="9">9</div>
      <div>Enter</div>
      <div data-number="0">0</div>
      <div>Clear</div>
    </div>
  </div>
</div>

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

镜花水月 2025-02-16 18:18:28

在您的handlekekep事件处理程序中使用event.keycode,以确定按下哪个键,如果按下 enter 键,然后在按下同一指令时发送相同的指令单词 enter 单击:

document.getElementById("pin-pad").addEventListener("click", (event) => {
  if (event.target.innerText === "Enter") {
    //window.electronAPI.sendPin(pin);
    console.log('click Enter')
    return;
  }
})

const handlekeyUp = function (e) {
  e.stopPropagation();

  if ( 13 === e.keyCode ) { // Enter key
    //window.electronAPI.sendPin(pin);
    console.log('keypress Enter')
  }
}

document.addEventListener("keyup", handlekeyUp);
<div id="pin-pad">
  <div>Enter</div>
</div>


重构代码,然后单击单词“ Enter” Word,KeyPress输入密钥:

const handleKey = (event) => {
  const key = event.key || event.target.innerText;
  if (!/^([0-9]|Enter|Clear|Escape)$/.test(key)) { return; }
  handleKeyOut(event);

  const display = document.getElementById("display");

  if (key === "Enter") {
    console.log("sendPin", display.value);
    //window.electronAPI.sendPin(display.value);
    return;
  }

  if (key === "Clear" || key === "Escape") {
    pin = display.value = "";
    return;
  }

  display.value += key;
}

const handleKeyOver = (event) => {
  const key = event.key || event.target.innerText;
  const number = document.querySelector(`[data-key="${key}"]`);
  if (!number) { return; }
  number.style.backgroundColor = "#eee";
};

const handleKeyOut = (event) => {
  const key = event.key || event.target.innerText;
  const number = document.querySelector(`[data-key="${key}"]`);
  if (!number) { return; }
  number.style.backgroundColor = "#fff";
};

document.getElementById("pin-pad").addEventListener("click", handleKey);
document.addEventListener("keyup", handleKey);
document.addEventListener("keydown", handleKeyOver);
document.querySelectorAll("[data-key]").forEach((divkey) => {
  divkey.addEventListener("mouseover", handleKeyOver);
  divkey.addEventListener("mouseout", handleKeyOut);
})
<div id="container">
  <div id="wrapper">
    <input type="password" id="display" disabled />

    <div id="pin-pad">
      <div data-key="1">1</div><div data-key="2">2</div><div data-key="3">3</div>
      <div data-key="4">4</div><div data-key="5">5</div><div data-key="6">6</div>
      <div data-key="7">7</div><div data-key="8">8</div><div data-key="9">9</div>
      <div data-key="0">0</div>
      <div data-key="Enter">Enter</div><div data-key="Clear">Clear</div>
    </div>
  </div>
</div>

Use event.keyCode in your handlekeyUp event handler to determine which key is pressed and if the Enter key is pressed, then send the same instruction when the word Enter is clicked:

document.getElementById("pin-pad").addEventListener("click", (event) => {
  if (event.target.innerText === "Enter") {
    //window.electronAPI.sendPin(pin);
    console.log('click Enter')
    return;
  }
})

const handlekeyUp = function (e) {
  e.stopPropagation();

  if ( 13 === e.keyCode ) { // Enter key
    //window.electronAPI.sendPin(pin);
    console.log('keypress Enter')
  }
}

document.addEventListener("keyup", handlekeyUp);
<div id="pin-pad">
  <div>Enter</div>
</div>


Refactoring your code and including click word "Enter" word, and keypress Enter key:

const handleKey = (event) => {
  const key = event.key || event.target.innerText;
  if (!/^([0-9]|Enter|Clear|Escape)$/.test(key)) { return; }
  handleKeyOut(event);

  const display = document.getElementById("display");

  if (key === "Enter") {
    console.log("sendPin", display.value);
    //window.electronAPI.sendPin(display.value);
    return;
  }

  if (key === "Clear" || key === "Escape") {
    pin = display.value = "";
    return;
  }

  display.value += key;
}

const handleKeyOver = (event) => {
  const key = event.key || event.target.innerText;
  const number = document.querySelector(`[data-key="${key}"]`);
  if (!number) { return; }
  number.style.backgroundColor = "#eee";
};

const handleKeyOut = (event) => {
  const key = event.key || event.target.innerText;
  const number = document.querySelector(`[data-key="${key}"]`);
  if (!number) { return; }
  number.style.backgroundColor = "#fff";
};

document.getElementById("pin-pad").addEventListener("click", handleKey);
document.addEventListener("keyup", handleKey);
document.addEventListener("keydown", handleKeyOver);
document.querySelectorAll("[data-key]").forEach((divkey) => {
  divkey.addEventListener("mouseover", handleKeyOver);
  divkey.addEventListener("mouseout", handleKeyOut);
})
<div id="container">
  <div id="wrapper">
    <input type="password" id="display" disabled />

    <div id="pin-pad">
      <div data-key="1">1</div><div data-key="2">2</div><div data-key="3">3</div>
      <div data-key="4">4</div><div data-key="5">5</div><div data-key="6">6</div>
      <div data-key="7">7</div><div data-key="8">8</div><div data-key="9">9</div>
      <div data-key="0">0</div>
      <div data-key="Enter">Enter</div><div data-key="Clear">Clear</div>
    </div>
  </div>
</div>

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文