2016-07-25 47 views
-2

我有3個輸入申請輸入兩個百分比給我的第三

我要進入兩個輸入第三拉自動推杆

<input id='cpercentage' name='first'> 
<input id='epercentage' name='second'> 
<input id='mpercentage' name='third'> 

我在第一個20%,在第二個30進%

在第三它會自動出現50%的100%

(20%+ 30%),其餘 - 100%= 50% 如何做到這一點在JavaScript?

我試過,但它不到風度工作

$(函數(){

$('#cpercentage').on('input', function() { 
    calculate(); 
}); 
$('#epercentage').on('input', function() { 
calculate(); 
}); 
function calculate(){ 
    var pPos = parseInt($('#cpercentage').val()); 
    var pEarned = parseInt($('#epercentage').val()); 
    var perc=""; 
    if(isNaN(pPos) || isNaN(pEarned)){ 
     perc=" "; 
     }else{ 
     perc = (100-(pEarned+pPos)).toFixed(3); 
     } 

    $('#mpercentage').val(perc); 
} 

});

+1

請嘗試正確的事件。你可以做到這一點的變化,焦點了,......我更喜歡變化,因爲你會在你的意思在HTML – AxelH

+0

例如PLZ,添加「的onChange =‘call_to_function’ '字段在輸入框的標記 –

+0

@mohamadmohamad實時看到價值 – HolyDanna

回答

2

我將事件設置爲change

​​

也是你的計算是錯誤的,在一個點上

perc = (100- (pEarned+pPos)).toFixed(3); 

添加一個%的計算結果你只需要這樣做:

$('#mpercentage').val(perc+"%"); 

結合這將是這樣的:

$('#cpercentage').on('change', function() { 
 
     calculate(); 
 
    }); 
 
    $('#epercentage').on('change', function() { 
 
    calculate(); 
 
    }); 
 
    function calculate(){ 
 
     var pPos = parseInt($('#cpercentage').val()); 
 
     var pEarned = parseInt($('#epercentage').val()); 
 
     var perc=""; 
 
     if(isNaN(pPos) || isNaN(pEarned)){ 
 
      perc=" "; 
 
      }else{ 
 
      perc = (100- (pEarned+pPos)).toFixed(3); 
 
      } 
 

 
     $('#mpercentage').val(perc+"%"); 
 
    }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input id='cpercentage' name='first'> 
 
<input id='epercentage' name='second'> 
 
<input id='mpercentage' name='third'>


爲了得到這個與選擇,你只需要正確地改變標籤的工作:

$('#cpercentage').on('change', function() { 
 
     calculate(); 
 
    }); 
 
    $('#epercentage').on('change', function() { 
 
    calculate(); 
 
    }); 
 
    function calculate(){ 
 
     var pPos = parseInt($('#cpercentage').val()); 
 
     var pEarned = parseInt($('#epercentage').val()); 
 
     var perc=""; 
 
     if(isNaN(pPos) || isNaN(pEarned)){ 
 
      perc=" "; 
 
      }else{ 
 
      perc = (100- (pEarned+pPos)).toFixed(3); 
 
      } 
 

 
     $('#mpercentage').val(perc+"%"); 
 
    }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<select id='cpercentage' name='first'> 
 
<option>10%</option> 
 
<option>15%</option> 
 
<option>30%</option> 
 
</select> 
 
<select id='epercentage' name='second'> 
 
<option>10%</option> 
 
<option>15%</option> 
 
<option>30%</option> 
 
</select> 
 
<input id='mpercentage' name='third'>

+0

謝謝你的工作,但如果我改變輸入提交到HTML選擇字段它停止工作如何解決這個問題? –

+0

如果我理解你的權利,你問如何計算,如果兩個第一個字段將是 ' 您可以將結果字段。 如果您現在選擇某些值,它仍然應該計算。 – DShade

+0

沒錯就是當HTML是一種選擇<選項.... –

1

兩個備註:

  • 您沒有使用正確的事件。突出顯示文字時,將觸發select事件。
  • perc = (100 - (pEarned + pPos)).toFixed(3);
0
  1. 首先,你應該聽聽其他事件一樣keyupchangeselect
  2. 然後,也許你想要得到的absoulte值,使用Math.abs()toFixed()

這裏是代碼:

$(function() { 

    $('#cpercentage').on('keyup', function() { 
     calculate(); 
    }); 
    $('#epercentage').on('change', function() { 
     calculate(); 
    }); 

    function calculate() { 
     var pPos = parseInt($('#cpercentage').val()); 
     var pEarned = parseInt($('#epercentage').val()); 
     var perc = ""; 
     if (isNaN(pPos) || isNaN(pEarned)) { 
      perc = " "; 
     } else { 
      perc = Math.abs((pEarned + pPos) - 100); 
     } 

     $('#mpercentage').val(perc + '%'); 
    } 

}); 

change和之間的差別不大210,你可以選擇任何你想要的。