这是我的js代码,我使用onblur方法调用下面的函数。
function getTotalNew(id)
{
//alert(id);
var con = document.getElementById('con'+id).value;
con = Number(con);//alert(con);
var was = document.getElementById('was'+id).value;
was = Number(was);//alert(was);
var ttl = document.getElementById('ttl'+id).value;
ttl = Number(ttl);//alert(ttl);
var value1 = (con*ttl);//alert(value1);
var value2 = (ttl*con*was)/100;
var res = value1 + value2; //alert(res);
document.getElementById('ttl'+id).value = res;
}
我希望它只执行一次。
但是,只要我把鼠标拿出来,它就会执行。这突然改变了我的身材。
如何让它只执行ONCE?
答案 0 :(得分:0)
尝试onchange事件。 代码似乎你想在onchange上进行计算,而不是每次都集中注意力。
答案 1 :(得分:0)
试试这个:
var flag=1;
if(flag){
function getTotalNew(id)
{
//alert(id);
flag = 0;
var con = document.getElementById('con'+id).value;
con = Number(con);//alert(con);
var was = document.getElementById('was'+id).value;
was = Number(was);//alert(was);
var ttl = document.getElementById('ttl'+id).value;
ttl = Number(ttl);//alert(ttl);
var value1 = (con*ttl);//alert(value1);
var value2 = (ttl*con*was)/100;
var res = value1 + value2; //alert(res);
document.getElementById('ttl'+id).value = res;
}
}
答案 2 :(得分:0)
正如Abhishek所说,你不想在Blur上运行这个功能,因为每次你移动焦点时我都会运行这个功能。
你有2个解决方案:
1)是使用onChange而不是onBlur,实际上onChange只会在输入值发生变化时运行该函数,因此,例如,如果你选择它而不进行任何更改它将无法运行,(但如果你按空间它会)
2)使用onKeyDown(每次输入内容时都会运行该函数..)。我不知道你的功能在哪里使用,但有时它给网站带来了很好的动态效果。
答案 3 :(得分:0)
使用jQuery .off 方法,一旦调用后保持diable ...
function getTotalNew(id)
{
//alert(id);
var con = document.getElementById('con'+id).value;
con = Number(con);//alert(con);
var was = document.getElementById('was'+id).value;
was = Number(was);//alert(was);
var ttl = document.getElementById('ttl'+id).value;
ttl = Number(ttl);//alert(ttl);
var value1 = (con*ttl);//alert(value1);
var value2 = (ttl*con*was)/100;
var res = value1 + value2; //alert(res);
document.getElementById('ttl'+id).value = res;
var disId = 'con'+id;
$("body").off("change", "#"+disId, getTotalNew);
}