Javascript 无法将现有函数应用于 onkeyup
Posted
技术标签:
【中文标题】Javascript 无法将现有函数应用于 onkeyup【英文标题】:Javascript can't apply an existing function to onkeyup 【发布时间】:2015-12-03 12:02:34 【问题描述】:我有一堆 html 数字输入,我已经通过
x=document.querySelectorAll('input[type="number"]');
然后我尝试使用 for 循环遍历它,并应用 onkeyup
函数。函数是这样的:
t=function(elem)
elem.onkeyup=function(e)
if(!/[\d\.]/.test(String.fromCharCode(e.which)))
elem.value='';
;
;
基本上,如果输入了一个字母,它的作用就是清除输入的值。我知道我可以通过 HTML 应用它:
<input type='number' onkeyup='t(this)'/>
但是我怎样才能用 javascript 做到这一点呢?我尝试通过它迭代:
x=document.querySelectorAll('input[type="number"]');
for(i=0; i<x.length; i++)
x[i].onkeyup=t(this);
但它不起作用。我究竟做错了什么?我怎样才能做到这一点?请仅使用常规 JavaScript 答案,不要使用 jQuery 或其他框架/库。
【问题讨论】:
顺便说一句,这会造成非常糟糕的 UI 体验,用户仍然可以通过复制粘贴或拖放来输入非数字字符。最好在他们完成输入数据并提出错误建议后检查结果,而不是试图超越——思考用户。 查看input
事件以替换 keyup
【参考方案1】:
改变
x[i].onkeyup=t(this);
到
x[i].onkeyup=t(x[i]);
因为this
不是你想要的样子
【讨论】:
似乎对我不起作用。能不能做个demo之类的?我确定我错过了一些小东西......【参考方案2】:抱歉,大家。我找到了我的答案。同意 Jaromanda X,我需要改变
x[i].onkeyup=t(this);
到
x[i].onkeyup=t(x[i]);
这(双关语;)是问题的一部分,但主要问题是有效的属性名称是
keyup=function();
而不是
onkeyup=function()'
【讨论】:
以上是关于Javascript 无法将现有函数应用于 onkeyup的主要内容,如果未能解决你的问题,请参考以下文章