2013-06-28 3 views
0

Я пытаюсь добавить кучу одной формы в другую форму. Я думаю, что я рядом, но я не знаю, где отключается. Я пытаюсь суммировать форму, а затем суммировать итоги в формах до конца.Общая сумма класса в форме

HTML

<div class="container"> 
    <div class="row-fluid"> 
     <div class "span12 exercise1 addWorkout"> 
      <img src="assets/img/plus01.jpg" class="addWorkout imgButton">Add A Workout</div> 
     <!-- <img src="assets/img/minus01.png" class="delWorkout imgButton"> --> 
     <div class="span12 workoutList" id="workoutList"> 
      <div class="cloneMe"> 
       <div class="row-fluid exercise1 one_rep_calc_container workoutOrgin span4"> 
        <div class="oneWorkout"> 
         <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> 
          <div class="span4">TotalWeight 
           <input class="totalWeight" type="number" Name="totalWeight" size="2"> 
          </div> 
         </form> 
         <!-- <img src="assets/img/plus01.jpg" class="addWorkout exercise1 imgButton"> 
--> 
         <img src="assets/img/minus01.png" class="delWorkout imgButton"> 
        </div> 
       </div> 
      </div> 
     </div> 
     <div class="span12 workoutResults"> 
      <form> 
       <div class="span4">Total 
        <input class="totalAll" id="subtotal" type="number" name="total" size="2"> 
       </div> 
      </form> 
     </div> 
    </div> 
</div> 

JQuery

$('.totalWeight').change(function() { 
    var parent = $(this).parents('.workoutResults .one_rep_calc_container'); 
    var totalWeight = parseInt(parent.find('.totalWeight').val(), 10); 
    var totalAll = parseInt(parent.find('.totalAll').val(), 10); 

    if (weight > 0) { 
     var totalWeightval = 0; 
     $('.totalWeight').each(function() { 
      totalWeightval += parseFloat(this.value); 
     }); 
     parent.find('.totalAll').val(totalWeightval); 
    } else { 
     parent.find('.totalAll'); 
    } 
}); 

какие-либо предложения о том, как я мог лучше организовать свой код, который был бы велик, как хорошо.

+1

В чем проблема? обновления или нет входов? Мой совет, дважды проверьте свой родительский селектор, потому что он не согласуется с вашей разметкой и пытается уточнить логику для вашей функции. –

ответ

0
var parent = $(this).parents('.workoutResults .one_rep_calc_container'); 

parents ищет все возможные родительские элементы, которые соответствуют селектору. Вместо этого вы должны использовать closest.


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

Сколько входов с классом totalWeight есть? Один или несколько? Позже вы используете $('.totalWeight').each(...), что указывает, что будет несколько, однако parent.find('.totalWeight').val() имеет смысл только в том случае, если есть один.


if (weight > 0) { 

Вы не определили переменную weight еще (если это не глобальная переменная, которую не показывают), поэтому это сравнение всегда false.


parent.find('.totalAll'); 

Эта линия сам по себе ничего не делать полезное.