2011-06-07 24 views
0

JS:怎麼不jQuery的複製動作

$(".test").focusout(function(){ 
    var qtdCont = parseInt($(this).val()); 
     if(qtdCont > 0) 
     { 
     var qtdProd  = $(".value").val(); 
     var qtdProdInt = parseInt(qtdProd); 
     var qtdProdTot = qtdProd-qtdCont; 
     $(".value").val(qtdProdTot); 
     } 
}); 

演示:Jsfiddle

我需要的只是減拳頭的時候,他失去了焦點。

因爲如果你再回去聚焦,減法(明顯)會再次發生。

我該如何控制它?

謝謝。

+0

有兩件事:首先,我不確定你在做什麼。其次,*編輯框不應該用作命令誘導控件*。給用戶一個按鈕來點擊。 – riwalk 2011-06-07 17:01:25

+0

@ Stargazer712:小費。 – 2011-06-07 17:08:30

回答

2

使用data中的DOM元素:

$(".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); 
    } 
}); 

小提琴: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); 
}); 

小提琴:http://jsfiddle.net/dNEmD/27/

+0

@Neal:完美的作品,但如果我回去再次改變這個值,那麼減法就不起作用。 – 2011-06-07 17:04:42

+0

大聲笑我在印象中,這是想法 – Neal 2011-06-07 17:05:44

+0

@ric_bfa,看我的更新 – Neal 2011-06-07 17:07:57

0

保持SEM aphore變量在頂部某處。它開始是假的,那麼你第一次集中注意設置它是真的。對於其餘的程序壽命,它仍然是正確的,並且當信號變量爲真時,不允許執行某些部分的聚焦代碼。