2017-12-12 9 views
1

これは株式の類推で議論します。私はSKUについて20ユニットの在庫を受け取ります、今私はこの在庫を分配したい3つの倉庫を持っています。それらの正面。与えられたHTML番号フィールドの数字の合計を維持する

Warehouse1 [ 20^] <-- this is html number field and 20 is assigned to first warehouse by default 
Warehouse2 [ ^] 
Warehouse2 [ ^] 

ユーザーが10にwarehouse2の値を変更した場合、ユーザはwarehouse3に5を入れて、それはwarehouse1かwarehouse2のいずれかで調整取得する場合さて、その後、warehouse1値は、その後10に変更する必要があります。次

は私がしようとしているコードです

function recalculateStockAssignment(ele) { 
     var prev_val = parseFloat(jQuery(ele).data('prev')); 
     var dif = prev_val - parseFloat(jQuery(ele).val()); 
     jQuery("input[name='" + jQuery(ele).prop('name') + "']").not(ele).each(
       function() { 
        if (jQuery(this).val() > 0 && dif < 0) 
        { 
         var val = parseFloat(jQuery(this).val()) + parseFloat(dif); 
         console.log("difference is minus", val); 
         jQuery(this).val(parseFloat(val)); 
        } else 
        { 
         var val = parseFloat(jQuery(this).val()) + parseFloat(dif); 
         console.log("difference is positive", val); 
         if(parseFloat(jQuery)) 
         jQuery(this).val(parseFloat(val)); 
        console.log(this); 

        } 
       }); 
       jQuery(ele).data('prev', jQuery(ele).val()); 
      } 

でこれは期待通りに動作していない、と私はいくつかの専門家の心は簡単な解決策を考え出すことができることを感じて取得しています。あなたの助けがはるかに高く評価されて

、感謝

答えて

0

これは、あなたの質問をカバーするか、少なくともあなたは正しい軌道に乗って行くはずです - あなたはtotal_stock変数を設定してください。このソリューションは、整数値のために設計されています。それは完璧に動作ソリューションの

var total_stock = 20 
 
    $(document).ready(function(){ 
 
     
 
    
 
     $(".warehouse").on("change",function(){ 
 
     recalculateStockAssignment($(this)) 
 
     }) 
 
    }) 
 
    
 
    function recalculateStockAssignment(ele) { 
 
     if(ele.val() > total_stock){ 
 
     ele.val(total_stock) 
 
     } 
 
     var changed_val = ele.val() 
 
     var cur_id = ele.prop('id') 
 
     var temp_total = 0 
 
     $(".warehouse").each(function(){ 
 
      temp_total+=parseInt($(this).val()) 
 
     }) 
 
     var diff = total_stock - temp_total 
 
     
 
     
 
     $(".warehouse").each(function(){ 
 
      
 
      if($(this).prop('id')!=cur_id){ 
 
      var val=parseInt($(this).val()) 
 
      if(val+diff > 0){ 
 
       $(this).val(parseInt(val)+parseInt(diff)) 
 
       diff=0 
 
      }else{ 
 
       $(this).val(0) 
 
       diff=parseInt(val)+parseInt(diff) 
 
      } 
 
      } 
 
     }) 
 
     
 
    }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input type="number" id="w1" class="warehouse" value="20"> 
 
<input type="number" id="w2" class="warehouse" value="0"> 
 
<input type="number" id="w3" class="warehouse" value="0">

+0

おかげで、私はちょうど条件 'IF($(この).prop( '最大')> =(のparseIntを追加しました(val)+ parseInt(diff))) 'を実行してmaxプロパティに従います。もう一度あなたの時間とエネルギーに感謝します。 – thakurnp

+0

お手伝いしてうれしいです。 –

関連する問題