如何定位页面上的所有输入?

这个问题在这里已经有了答案:

  • 对于多个元素jQuery相同的点击事件9个答案

  • 使用querySelectorAll来选择所有匹配选择器的元素。 选择所有输入类型的number元素。

    var allNumberInputs = document.querySelectorAll('input[type="number"]');
    

    更新小提琴

    然后,您需要更新绑定元素事件的代码。 遍历所有匹配的元素并分别绑定每个元素上的事件。

    // Select your input element.
    var numInput = document.querySelectorAll('input[type="number"]');
    
    for (var i = 0, len = numInput.length; i < len; i++) {
      // Listen for input event on numInput.
      numInput[i].addEventListener('input', function() {
        // Let's match only digits.
        var num = this.value.match(/^d+$/);
        if (num === null) {
          // If we have no match, value will be empty.
          this.value = "";
        }
      }, false);
    }
    <label for="first">First</label>
    <br>
    <input type="number" min="0" />
    <br>
    <br>
    <label for="Second">Second</label>
    <br>
    <input type="number" min="0" />

    使用document.querySelectorAll()而不是document.querySelector()

    querySelectorAll()方法返回所有匹配的元素,而querySelector()方法只返回第一个,这就是你所得到的。


    querySelector只返回一个元素:第一个匹配元素。

    相反,您可以使用querySelectorAll 。 然后将事件监听器附加到返回的元素。

    如果您还想筛选其类型的输入,请使用以下命令:

    var numInputs = document.querySelectorAll('input[type=number]');
    

    然后你可以像这样添加事件监听器:

    for (var i = 0; i < numInputs .length; i++) {
        numInputs[i].addEventListener("click", yourFunction, false);
    }
    

    现在,由于您使用的是jQuery,因此可以利用这一点:

    $('body').on('input', 'input[type=number]', yourFunction);
    

    这就是你需要的。

    链接地址: http://www.djcxy.com/p/83441.html

    上一篇: How to target all inputs on the page?

    下一篇: 2.0.2.min.map not found'