javascript - 当用户输入更改时使用 jQuery 更新相同的 html 元素

标签 javascript jquery html input

我正在尝试进行一些计算,这些计算接受用户输入并提供计算值供用户查看。用户将提供两个值,然后返回结果 ADF。

我遇到的两个问题:该值是在我输入第二个值(FG)之前计算的;当任一值更改时,旧的 ADF 不会被替换。我明白这是因为它不断应用 .append(),但我不知道我需要使用什么。我提供了正在发生的事情的图片。我在下面列出了我的代码。

*请注意,round() 和 ADF() 函数是我用于计算的 Javascript 函数,我认为它与列出该代码无关。如果您认为有必要查看它,请告诉我。

预先感谢您的帮助。

function main() {
  $(document).on('change', '#Gravities', function () {
    OG = $('input[name=OG]').val();
    FG = $('input[name=FG]').val();
    var calc = round(ADF(OG,FG)*100, 2); 
    $('.ADFbox').append('<div class="ADF">'+calc+'%</div>');
  });
}

$(document).ready(main);
<body>
   <form id="Gravities">	
      <div>
         <p><label class="originalGravity">OG: <input type='text' name='OG' value =""></input></label></p>
      </div>
      <div>
         <p><label class="finalGravity">FG: <input type='text' name='FG' value=""></input></label></p>
      </div>
   </form>
   <div class = 'ADFbox'>
      <p>ADF:</p>
   </div>
</body>
</html>

enter image description here

enter image description here

最佳答案

$(document).on("input", ".gravity", function() {
  var thisval = $(this).val()
  var nothisval = $(".gravity").not(this).val()

  if (thisval.length > 0 && nothisval.length > 0) {//check if one value is empty
    OG = $('input[name=OG]').val();
    FG = $('input[name=FG]').val();
    //var calc = round(ADF(OG, FG) * 100, 2);
    var calc = OG * FG;//change this computation
    //$('.ADFbox').append('<div class="ADF">' + calc + '%</div>');
    $('.ADFbox').text("ADF:" + calc).change();


  } else {
    $('.ADFbox').text("ADF: 0");
  }

});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<body>
  <form id="Gravities">
    <div>
      <p><label class="originalGravity">OG: <input type='text' class="gravity"name='OG' value ="" /></label></p>
    </div>

    <div>
      <p><label class="finalGravity">FG: <input type='text' class="gravity" name='FG' value=""/></label></p>
    </div>
  </form>
  <div class='ADFbox'>
    <p>ADF:</p>
  </div>
</body>

检查每个值,如果两个值的长度都大于 0,则继续

注意:输入没有结束标记,只是像 <input /> 那样关闭

关于javascript - 当用户输入更改时使用 jQuery 更新相同的 html 元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42550204/

相关文章:

html - 嵌套在固定位置 div 中的绝对定位 div 的 Z-index

javascript - 如何在 JavaScript 中使用 Object.prototype

javascript - 如何通过jquery更改没有id的脚本

javascript - jQuery:选择出现在另一个指定元素之后的元素的第一个实例

javascript - 强制滚动条到底部 jquery/css

用于确认密码的 jQuery 验证不起作用

html - 转发电子邮件后电子邮件标记失去响应能力

html - 一行中的 Span 元素不会在 Chrome 浏览器中的 Bootstrap 容器中换行

javascript - 为什么本次测试中的 Qunit 计数器始终达不到目标值?

javascript - 如何拥有从右到左的文本输入字段