【发布时间】:2017-12-13 21:24:48
【问题描述】:
我正在使用以下脚本创建一个将对象附加到文本区域的函数:
Project PageProject Code
inputNum.onchange = inputNum.onkeydown = function(e){
if(e.type == 'change' || (e.type = 'keydown' && e.keyCode == 13)){
if(checkLength(inputNum.value,10) === true){
inputNum.value = 9999999999;
}
//random variables and functions
var j = 0;
var m = setInterval(function(){
if(j !== 0){
val = val * 40014;
}
if(val <= a){
if(useOpt === true){
res.value = res.value + "\n" + Math.round(Number((Number(val / div) * en) - sn));
}else{
res.value = res.value + "\n" + Number(Number(val / div) - Math.floor(val/div)).toFixed(5);
}
}else{
var n = val;
n = l(n,a);
val = n;
console.log(n);
if(useOpt === true){
res.value = res.value + "\n" + Math.round(Number((Number(n / div) * en) - sn));
}else{
res.value = res.value + "\n" + Number(Number(n / div) - Math.floor(n/div)).toFixed(5);
}
}
j = j + 1;
if(j == Number(rep.value)){
clearInterval(m);
}
},1);
res.value = res.value.replace(/\n/,"");
}
};
但是,当我在输入元素上按“输入”时,我似乎无法找到只运行一次此功能的方法。按“回车”的结果是:
0.00002
0.00002
0.74558
0.74558
而不仅仅是 0.00002 和 0.74558 本身。 有没有一种方法可以让我在按回车键更改输入值时只运行一次该函数?另外,我不想为此使用 jQuery。我希望代码在更改数字但未按下 Enter 键时以及按下 Enter 键且未更改任何内容时以及更改值且按下 Enter 键时运行。
【问题讨论】:
-
检查
e.keyCode === 13(回车键)并在这种情况下取消事件。 -
尝试从顶部条件中删除
e.type == 'change' ||。 -
我希望当您编辑值,然后单击窗口而不是按“Enter”时,它也会运行。另外,即使您不更改值,但按回车键,我也希望代码运行。
标签: javascript function events