我试图定位type="number"页面上的所有输入,但只有第一个输入被触发。有谁知道为什么以及如何定位所有输入元素?
我的JS:
// Select your input element.
var numInput = document.querySelector('input');
// Listen for input event on numInput.
numInput.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)
Run Code Online (Sandbox Code Playgroud)
使用querySelectorAll选择与选择器匹配的所有元素。选择所有输入类型number元素。
var allNumberInputs = document.querySelectorAll('input[type="number"]');
Run Code Online (Sandbox Code Playgroud)
然后您需要更新在元素上绑定事件的代码。循环遍历所有匹配的元素,并将事件分别绑定到每个元素上。
var allNumberInputs = document.querySelectorAll('input[type="number"]');
Run Code Online (Sandbox Code Playgroud)
// 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);
}Run Code Online (Sandbox Code Playgroud)
如果页面上包含jQuery
$('input[type="number"]')
Run Code Online (Sandbox Code Playgroud)
演示
<label for="first">First</label>
<br>
<input type="number" min="0" />
<br>
<br>
<label for="Second">Second</label>
<br>
<input type="number" min="0" />Run Code Online (Sandbox Code Playgroud)
$('input[type="number"]')
Run Code Online (Sandbox Code Playgroud)
我建议您使用HTML5 模式属性来仅允许数字值。
<input type="number" min="0" pattern="\d+" />
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3891 次 |
| 最近记录: |