0

以下のスクリプトでは、ジェネリック クラスを使用する代わりに、ターゲット要素 #customfield_11071 から始まり、最も近い「アクティブ ペイン」親要素 (.active- pane#tab-5) を作成し、class="text.long-field" を持つ子要素の入力のみを each? に渡します。

#tab-5 を each に直接渡せば済むと思っていたのですが、tab-5 の親コンテナの外側にあるクラスに一致するテキスト入力フィールドをピックアップして合計に追加するため、計算がうまくいきません。

jQuery(document).ready(function(){

        //iterate through each textboxes and add keyup
        //handler to trigger sum event
        jQuery("#tab-5 input.text.long-field").each(function() {

            jQuery(this).keyup(function(){
                calculateSum();
            });
        });

    });

    function calculateSum() {

        var sum = 0;
        //iterate through each textboxes and add the values
        jQuery("#tab-5 input.text.long-field").each(function() {

            //add only if the value is number
            if(!isNaN(this.value) && this.value.length!=0 && this.id !== "customfield_11071") {
                sum += parseFloat(this.value);
            }

        });
        //.toFixed() method will roundoff the final sum to 2 decimal places
        jQuery("#customfield_11071").val(sum.toFixed(2));
    }

HTML

  <div class="tabs-pane active-pane" id="tab-5">
    <div class="field-group">
      <label for="customfield_12370">
        Test Case Estimate
      </label>
      <input class="text long-field" id="customfield_12370" name="customfield_12370" type="text" value="">
      <div class="description">
        Will hold all QA estimates for Test Case preparation/creation efforts.
      </div>
    </div>
    <div class="field-group">
      <label for="customfield_12371">
        Test Analysis Estimate
      </label>
      <input class="text long-field" id="customfield_12371" name="customfield_12371" type="text" value="">
      <div class="description">
        Will hold all QA estimates for testing analysis efforts.
      </div>
    </div>
    <div class="field-group">
      <label for="customfield_11071">
        QA Estimate Total
      </label>
      <input class="text long-field" id="customfield_11071" name="customfield_11071" type="text" value="">
      <div class="description">
        Estimated LOE in Hours
      </div>
    </div>
  </div>

更新: 代わりに、クラス文字列を each に渡すのではなく、特定の ID のコレクションを配列に入力して、それを each() に渡すことができますか?

4

1 に答える 1

0

スクリプトは単独で正常に動作します。http://jsfiddle.net/jEEKL/を参照してください。このjQuery("#tab-5 input.text.long-field")jQuery セレクターで余分なフィールドを取得している場合は、ソースで重複するタブ ID を確認してください。

于 2013-04-03T15:49:08.637 に答える