📜  keyup 多个字段 - Javascript (1)

📅  最后修改于: 2023-12-03 15:17:08.373000             🧑  作者: Mango

在Javascript中使用keyup事件监听多个字段

在Web开发中,监听用户键盘输入是一项基本操作,keyup事件就是其中一种方法。通常情况下,监听一个输入框的值改变是比较简单的,但是当我们需要监听多个输入框的值改变时,就需要使用一些特殊的技巧。

下面我们将介绍在Javascript中如何使用keyup事件监听多个字段。

监听单个输入框

在监听单个输入框的值改变时,我们可以直接使用keyup事件,像下面这样:

const input = document.querySelector('#input');
input.addEventListener('keyup', (event) => {
  console.log(event.target.value);
});

以上代码将监听一个id为input的输入框的值改变事件,并在控制台中输出输入框的值。

监听多个输入框

当需要监听多个输入框的值改变时,我们可以将事件绑定到每一个输入框上,但这种方法会让代码非常冗长和难以维护。更好的做法是使用事件委托,将事件绑定到它们的共同父元素上。这样,当任何一个输入框的值发生改变时,都能够触发事件。

例如,我们有以下HTML代码:

<div id="parent">
  <input type="text" id="input1">
  <input type="text" id="input2">
  <input type="text" id="input3">
</div>

现在我们需要监听这三个输入框的值改变事件,可以这样做:

const parent = document.querySelector('#parent');
parent.addEventListener('keyup', (event) => {
  if (event.target.tagName === 'INPUT') {
    console.log(event.target.value);
  }
});

以上代码将监听一个id为parent的元素的keyup事件,并检查事件源是否为input标签。如果是,就输出这个输入框的值。

使用自定义属性名

在一些特殊的情况下,我们需要在触发事件时获取更多的元素信息。这时我们可以使用自定义属性名,将这些信息存储在元素的属性中。

例如,我们需要获取每个输入框的id和type,可以这样做:

<div id="parent">
  <input type="text" id="input1" data-field="input1-text">
  <input type="password" id="input2" data-field="input2-password">
</div>
const parent = document.querySelector('#parent');
parent.addEventListener('keyup', (event) => {
  if (event.target.tagName === 'INPUT') {
    const field = event.target.getAttribute('data-field');
    const id = event.target.getAttribute('id');
    const type = event.target.getAttribute('type');
    console.log(`${field}(${id}): ${type} - ${event.target.value}`);
  }
});

以上代码将输出每个输入框的id、type和值。

结论

在Javascript中,使用keyup事件监听多个字段需要使用事件委托和自定义属性名两种技巧。这样可以简化监听过程并处理更多元素信息。