2016-07-25 48 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,你可以选择任何你想要的。