javascript - 计算更改输入的新值

标签 javascript jquery

我有 2 个输入,我想每周计算一次到每两周一次,反之亦然。所以在改变时我想计算新值。我没有得到正确的值(每周更改需要每两周的值乘以二,每两周更改需要每周的值除以二并且它只触发一次(每次更改后需要更新)。

HTML:

<div class="frequencies">
<div>
   Weekly<br />
  <input class="weekly" type="text" value="1000" />
</div>

  <br /><br />
  <div>
    Fortnightly<br />
    <input class="fortnightly" type="text" value="2000" />
  </div>

</div>

J查询:

var weekly = $("input.weekly").val(),
    fortnightly = $("input.fortnightly").val();

w2f = parseFloat(weekly, 10) * 2;
f2w = parseFloat(fortnightly, 10) / 2;

$("input.weekly").on("change paste", function() {
  $(this).closest('.frequencies').find('input.fortnightly').val(w2f);
});

$("input.fortnightly").on("change paste", function () {
  $(this).closest('.frequencies').find('input.weekly').val(f2w);
});

下面是一小段代码:https://jsfiddle.net/nh12du38/3/

这应该是一件简单的事情,但我没有看到。我做错了什么?

最佳答案

您必须知道,如果您在监听器内的函数外部为变量赋值,则它的值只会在脚本加载时设置一次,并将保持该状态。

您必须在每个监听器中移动逻辑,因此如果发生了 changepaste 事件,变量将加载一个新的实际值。

$("input.weekly").on("change paste", function() {
  w2f = parseFloat($("input.weekly").val(), 10) * 2;
  f2w = parseFloat($("input.fortnightly").val(), 10) / 2;
  $(this).parent().parent().find('input.fortnightly').val(w2f);
});

$("input.fortnightly").on("change paste", function() {
  w2f = parseFloat($("input.weekly").val(), 10) * 2;
  f2w = parseFloat($("input.fortnightly").val(), 10) / 2;
  $(this).parent().parent().find('input.weekly').val(f2w);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="frequencies">
  <div>
    Weekly
    <br />
    <input class="weekly" type="text" value="1000" />
  </div>

  <br />
  <br />
  <div>
    Fortnightly
    <br />
    <input class="fortnightly" type="text" value="2000" />
  </div>

</div>

关于javascript - 计算更改输入的新值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43712317/

相关文章:

javascript - 创建一个文字以将成员应用为函数内的变量

javascript - 数字字段解析中的 Angular 省略零

javascript - 如何获取动态添加的行中的json数据

javascript - 如果值为空,如何设置输入的默认值?查询

javascript - Google Chrome浏览器使用iframe中的window.top.location阻止了重定向

javascript - 在 mongoDB 中,如何使用 async/await 获取使用 insertOne() 创建的对象的 id?

php - 将数据传入和传出 CKEditor/jQuery-UI 模式对话框

javascript - 从减去顶部值滑动 div

javascript - 尝试迭代多层嵌套数组时不断出现 'does not have any construct or call signatures'

jQuery $(document).keydown() 问题