javascript - 如何防止 jQuery 结果以两种不同的形式显示?

标签 javascript jquery web-applications

如何在这些表单中使用 jQuery 获得两个单独的结果?我在第一个表单中输入信息,答案显示在第二个表单中。

HTML:

<div class="span12">
  <div class="span4">
    <div class="row-fluid exercise1 one_rep_calc_container">
      <form>
        <div class="span4">Weight<input class="weight" type="number" name="weight" size="2" ></div>
        <div class="span4">Reps<input class="reps" type="number" name="reps" size="2" ></div>
        <div class="span4">OneRepMax<input class="one_rep_max" type="number" Name="oneRepMax" size="2" ></div>
      </form>
    </div>
  </div>
  <div class="span4">
    <div class="row-fluid exercise1 one_rep_calc_container">
      <form>
        <div class="span4">Weight<input class="weight" type="number" name="weight" size="2" ></div>
        <div class="span4">Reps<input class="reps" type="number" name="reps" size="2" ></div>
        <div class="span4">OneRepMax<input class="one_rep_max" type="number" Name="oneRepMax" size="2" ></div>
      </form>
    </div>
  </div>
</div>

oneRepMax是重量和次数结果的解决方案。

jQuery:

$('.one_rep_calc_container .weight, .one_rep_calc_container .reps').change(function(){
  var weight = parseInt($('.one_rep_calc_container .weight').val(), 10 );
  var reps   = parseInt($('.one_rep_calc_container .reps').val(), 10);
  if(weight > 0 && reps > 0){
    var oneRepMaxVal = ((reps*weight)/30) + weight;
    $('.one_rep_calc_container .one_rep_max').val(oneRepMaxVal);
  } else {
    $('.one_rep_calc_container .one_rep_max').val('');
  }
});

$('.one_rep_calc_container .calc_one_rep_button').click(function(){
    var weight = parseInt($('.one_rep_calc_container .weight').val(), 10 );
    var reps   = parseInt($('.one_rep_calc_container .reps').val(), 10);
    var oneRepMaxVal = ((reps*weight)/30) + weight;
    $('.one_rep_calc_container .one_rep_max').val(oneRepMaxVal);
});

那么如何将 oneRepMax 第一种形式的结果与第二种形式分开?

最佳答案

试试这个:

$('.one_rep_calc_container .weight, .one_rep_calc_container .reps').change(function(){
    var parent = $(this).parents('.one_rep_calc_container');   

    var weight = parseInt(parent.find('.weight').val(), 10 );
    var reps   = parseInt(parent.find('.reps').val(), 10);

    if(weight > 0 && reps > 0){
    var oneRepMaxVal = ((reps*weight)/30) + weight;
    parent.find('.one_rep_max').val(oneRepMaxVal);
  }
  else {
    parent.find('.one_rep_max').val('');
  }

});

$('.one_rep_calc_container .calc_one_rep_button').click(function(){
    var parent = $(this).parents('.one_rep_calc_container');
    var weight = parseInt(parent.find('.weight').val(), 10 );
    var reps   = parseInt(parent.find('.reps').val(), 10);

    var oneRepMaxVal = ((reps*weight)/30) + weight;
    parent.find('.one_rep_max').val(oneRepMaxVal);
});

这个想法是获取当前元素的父元素。该父级是您之后所有操作的上下文,这样您就只能使用当前父级的子级元素。

关于javascript - 如何防止 jQuery 结果以两种不同的形式显示?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17005815/

相关文章:

javascript - A 帧动画框在特定区域随机移动

Jquery 向上或向下移动表格行或移动 X

javascript - 想知道这段代码摘录是否可以代表事件监听器

java - 如何为我的 Java Web 应用程序创建 Debian 软件包?

基于 Python 的 Gallery Web 应用程序?

javascript - 为什么我的 AJAX 请求在 dev 中是 PUT 请求,但在运行测试时是 GET 请求?

javascript - 如何将数据主体发送到 XMLHttpRequest,看起来像这样?

javascript - Angularjs 缩小使用 grunt uglify 导致 js 错误

javascript - 单击后更改按钮值

c# - 从 DateTime 中删除时间