0

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

我希望它只执行一次。

但是,只要我拿出鼠标,它就会执行。这让我的形象突然发生了变化。

我怎样才能让它只执行一次?

4

4 回答 4

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);
}
于 2013-07-22T10:56:34.263 回答
0

正如 Abhishek 所说,您不想在 Blur 上运行该功能,因为每次您移动焦点时我都会运行该功能。

您有 2 个解决方案:

1)是使用onChange而不是onBlur,事实上,如果输入值发生变化,onChange只会运行该函数,因此例如,如果您在未进行任何更改的情况下使用标签,它将不会运行,(但如果您按空格键它会)

2)使用 onKeyDown (这将在您每次键入内容时运行该功能..)。我不知道你的功能在哪里使用,但有时它会给网站带来很好的动态效果。

于 2013-07-22T10:50:07.970 回答
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;
    }   
}
于 2013-07-22T10:47:53.200 回答
0

在 onchange 事件上尝试一下。代码似乎您想对 onchange 进行计算,而不是每次都关注焦点。

于 2013-07-22T10:41:18.117 回答