开发者

how do not duplicate a action in jquery

js:

 $(".test").focusout(function(){
    var qtdCont = parseInt($(this).val());
      if(qtdCont > 0)
      {
         var qtdProd     = $(".value").val();
  开发者_StackOverflow中文版       var qtdProdInt  = parseInt(qtdProd);
         var qtdProdTot  = qtdProd-qtdCont;
         $(".value").val(qtdProdTot);
      }
 });

Demo: Jsfiddle

i need the subtract only the fist time when he lose the focus.

because if u go's back and focusout again, the subtraction (obviously) will happen again.

how can i control that ?

thank you.


Use the data in the dom element:

$(".test").focusout(function(){
     var qtdCont = parseInt($(this).val());
    if(qtdCont > 0 && $(this).data('done') == undefined)
    {
         var qtdProd     = $(".value").val();
         var qtdProdInt  = parseInt(qtdProd);
         var qtdProdTot  = qtdProd-qtdCont;
         $(".value").val(qtdProdTot);
        $(this).data('done', true);
     }
});

Fiddle: http://jsfiddle.net/dNEmD/19/

UPDATE

$(".test").focusout(function(){
     var qtdCont = parseInt($(this).val());
    if(qtdCont > 0 && 
         ($(this).data('done') == undefined || $(this).data('done') == false))
    {
         var qtdProd     = $(".value").val();
         var qtdProdInt  = parseInt(qtdProd);
         var qtdProdTot  = qtdProd-qtdCont;
         $(".value").val(qtdProdTot);
        $(this).data('done', true);
     }
});

$(".test").change(function(){ //if value was changed
     $(this).data('done', false);
});

Fiddle: http://jsfiddle.net/dNEmD/27/


keep a semaphore variable at the top somewhere. It's start out false, then the first time you focus out set it true. It remains true for the rest of the programs lifespan and you do not allow certain parts of focusout code to execute when the semaphore variable is true.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜