如何多次停止onblur js加载?

时间:2013-07-22 10:39:07

标签: javascript

这是我的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?

4 个答案:

答案 0 :(得分:0)

尝试onchange事件。 代码似乎你想在onc​​hange上进行计算,而不是每次都集中注意力。

答案 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);
}