Javascript 如何将onkeypress事件侦听器添加到输入标记
在获取一组输入元素标记后,我尝试在它们之间循环添加onkeypress事件监听器 我的代码:Javascript 如何将onkeypress事件侦听器添加到输入标记,javascript,dom,Javascript,Dom,在获取一组输入元素标记后,我尝试在它们之间循环添加onkeypress事件监听器 我的代码: window.onload = function() { // Add the event listeners to input tags // Get the array of input tags var inputTags = document.getElementsByClassName('validateInput'); console.log(in
window.onload = function()
{
// Add the event listeners to input tags
// Get the array of input tags
var inputTags = document.getElementsByClassName('validateInput');
console.log(inputTags);
// Loop through them, adding the onkeypress event listener to each one
for (var i = 0; i < inputTags.lenght; i++)
{
var tag = inputTags[i];
var functionToAdd = function(event, tag)
{
isNumberOrDot(event, tag);
};
tag.addEventListener('keypress', functionToAdd, false);
}
};
window.onload=function()
{
//将事件侦听器添加到输入标记
//获取输入标记的数组
var inputTags=document.getElementsByClassName('validateInput');
控制台日志(inputTags);
//循环遍历它们,将onkeypress事件监听器添加到每个监听器中
对于(变量i=0;i
问题:
window.onload = function()
{
// Add the event listeners to input tags
// Get the array of input tags
var inputTags = document.getElementsByClassName('validateInput');
console.log(inputTags);
// Loop through them, adding the onkeypress event listener to each one
for (var i = 0; i < inputTags.lenght; i++)
{
var tag = inputTags[i];
var functionToAdd = function(event, tag)
{
isNumberOrDot(event, tag);
};
tag.addEventListener('keypress', functionToAdd, false);
}
};
为什么不标记.addEventListener('keypress',functionToAdd,false)代码>未添加onkeypress事件侦听器?。上面的长度拼写错误:
for(var i=0;i
您在代码中遇到了3个问题。首先,不要在循环中创建函数,其次是闭包问题(您总是只会得到最后一个i
值),第三是您在length
属性中有输入错误,应该更正代码
window.onload = function()
{
// Add the event listeners to input tags
// Get the array of input tags
var inputTags = document.getElementsByClassName('validateInput');
console.log(inputTags);
// Loop through them, adding the onkeypress event listener to each one
var functionToAdd = function(event, tag)
{
isNumberOrDot(event, tag);
};
for (var i = 0; i < inputTags.length; i++)
{
(function( i ) {
inputTags[ i ].addEventListener('keypress', function( e ) {
functionToAdd( e, inputTags[i] )
}, false);
})( i );
}
};
window.onload=function()
{
//将事件侦听器添加到输入标记
//获取输入标记的数组
var inputTags=document.getElementsByClassName('validateInput');
控制台日志(inputTags);
//循环遍历它们,将onkeypress事件监听器添加到每个监听器中
var functionToAdd=函数(事件、标记)
{
isnumberrordot(事件、标记);
};
对于(变量i=0;i
我创建了一个包含您的更正的文档。它还不能工作。我只想让输入标记具有onkeypress=“isnumberrordot(event,tag)”
属性。@sargas您的JSFIDLEUncaught ReferenceError中有一个错误:isnumberdot没有定义
,我看不到在哪里isnumberrordot
函数定义了我添加到了上的其他函数,以便您可以测试它。谢谢你的时间。看这把小提琴:。问题是,IsNumberRorDot
的工作原理与预期不符+没有destroyElement
的功能,而且您可能需要使用keyup
事件,而不是keypress
谢谢您的解决方案,效果非常好。是的,“keyup”正是我在js脚本检查是否有效后删除无效字符所需要的。脚本不会删除已按下的字符(无效-不是点数),但尚未添加到input.value
中。“keyup”允许脚本在输入后运行。值用键入的字符更新。谢谢,这只是问题的一部分。一旦修复,解决方案就无法实现。检查我的电脑。