【问题标题】:jquery: percentage of two numbersjquery:两个数字的百分比
【发布时间】:2012-11-17 05:04:07
【问题描述】:

已编辑

感谢所有提供支持的人...我将与您分享最好的工作脚本,希望我可以帮助其他正在寻找相同解决方案的人:

    $(document).ready(function(){
$("#price1, #price2").keyup(function() {
  var priceOne = parseFloat($("#price1").val());
  var priceTwo = parseFloat($("#price2").val());
  var rate = parseFloat($("#rate").val());
  if ($("#price1").val() && $("#price2").val()){     
  $('#rate').val(((priceTwo - priceOne) / priceOne * 100).toFixed(2));
}

});

$("#rate").keyup(function() {
  var priceOne = parseFloat($("#price1").val());
  var rate = parseFloat($("#rate").val());

   if ($("#rate").val() && $("#price1").val() && $("#price2").val()){
 $('#price2').val(((priceOne * rate)/ 100 + priceOne).toFixed(2));
}
});
})

你也可以按照LINK进行测试


初始问题:

请帮助计算两个数字之间的百分比。我尝试了一种方法,但没有成功。请告诉我出了什么问题,或者如果您能推荐其他可以帮助我的脚本,我将不胜感激

我的脚本:

<html>
<head>
 <script type="text/javascript">
$("#rate").text(function() {
    var result = (parseInt(($("#price1").text(), 10) * 100)/ parseInt($("#price2").text(), 10));
    if (!isFinite(result)) result = 0;
    return result;
});?
</script> 

</head>
<body>
<div id="price1"><label><input id="price1" type="text"></label></div>
<div id="price2"><label><input id="price2" type="text"></label></div>
<div id="rate"><label><input id="rate" type="text"></label></div>


</body>
</html>

【问题讨论】:

  • 为什么? 在脚本标签的最后一行?可能是错字的问题..
  • 对不起,这里可能有问题,我是这个领域的新手
  • 我也是新手。。我想你是从其他网站复制过来的,这会产生 hidden 特殊字符。删除?,也许它会起作用:)还要检查阿迪尔的答案。

标签: jquery html keyup rate


【解决方案1】:

使用val() 而不是text() 作为输入元素,使用$(function(){}) 等待DOM 准备好。并且不要对元素使用相同的 ID。

<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script type="text/javascript">
$(function() {
  $("#price1, #price2").change(function() { // input on change
    var result = parseFloat(parseInt($("#price1").val(), 10) * 100)/ parseInt($("#price2").val(), 10);
    $('#rate').val(result||''); //shows value in "#rate"
  })
});
</script> 
</head>
<body>
<div id="price-div1"><label>price1</label><input id="price1" type="text"></div>
<div id="price-div2"><label>price2</label><input id="price2" type="text"></div>
<div id="rate-div"><label>rate</label><input id="rate" type="text">%</div>
</body>
</html>

【讨论】:

    【解决方案2】:

    你的问题很少,

    1. ?在文本函数的右括号之后。
    2. div 和文本框的重复 ID price1 和 price2
    3. 如果你想从文本框输入,那么你应该使用 val() 而不是 text()

    修正了你的代码

    Live Demo

    HTML

    <div id="dprice1"><label><input id="price1" type="text" value="80" /></label></div>
    <div id="dprice2"><label><input id="price2" type="text" value="100" /></label></div>
    <div id="drate"><label><input id="rate" type="text"></label></div>
    <input id="btnCal" type="button" value="Calculate">
    

    Javascript

    $("#btnCal").click(function() {
        $("#rate").val(function() {
            var result = parseInt($("#price1").val()) * 100 / parseInt($("#price2").val());
            if (!isFinite(result)) result = 0;
            return result;
        });
    });​
    

    【讨论】:

      【解决方案3】:

      检查这个小提琴

      http://jsfiddle.net/j3WY3/5/

      做了一些更正:

      • 如大家所说,删除了?
      • .text() 更改为.val()
      • divinput 的 id 相同

      【讨论】:

        【解决方案4】:

        这样使用,

        <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
        <html xmlns="http://www.w3.org/1999/xhtml">
        <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title>Untitled Document</title>
        </head>
        
        <script type="text/javascript">
        $("#rate").text(function() {
            var result = (parseFloat(($("#price1").val(), 10) * 100)/ parseFloat($("#price2").val(), 10));
            if (!isFinite(result)) result = 0;
            return result;
        });
        </script> 
        <body>
        <div class="price1"><label><input id="price1" type="text"></label></div>
        <div class="price2"><label><input id="price2" type="text"></label></div>
        <div class="rate"><label><input id="rate" type="text"></label></div>
        </body>
        </html>
        

        改变div类,通过val()获取输入值

        【讨论】:

          【解决方案5】:

          您可能想使用 parseFloat() 而不是 parseInt()

              <div id="price-div1"></label>price1<label><input id="price1" type="text"></div>
              <div id="price-div2"></label>price2<label><input id="price2" type="text"></div>
              <div id="rate-div"><label>rate</label><input id="rate" type="text">%</div>
          
              <script type="text/javascript">
                  $(function() {
                      $("#price1, #price2").change(function() {
                          var result = parseFloat(parseFloat($("#price1").val(), 10) * 100)/ parseFloat($("#price2").val(), 10);
                          $('#rate').val(result||'');
                      })
                  });
              </script>
          

          【讨论】:

          • 您好,感谢您尝试帮助我。我试过了,我仍然没有在 DIV 中收到 RATE 任何结果
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-08-13
          • 1970-01-01
          • 2012-04-07
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多