2017-05-01 15 views
1

ユーザーがデータを入力している間にトリガーされる2つの関数があります。基本的には、選択したオプションの値を加算して出力します。ページロード時のJS関数のトリガーが機能していません

このフォームでは、特にオプションは事前に設定されています。このため、ファンクションはトリガされておらず、計算はnullのままです。

機能がちょうど</body>

機能の上に表示されています

$(function() { 
    calculateHiddenScore(); 
    calculateScore(); 
}); 

私も持っている:

$(calculateScore); 
     function calculateScore() { 
     var fields = $('.form-group #input').change(calculate); 

     function calculate() { 
      var score = 0; 
      fields.each(function() { 
      score += +$(this).val(); 
      }); 
      $('#score').html(score.toFixed(0)); 
     } 
     } 

     $(calculateHiddenScore); 
     function calculateHiddenScore() { 
     var fields = $('.form-group #input').change(calculate); 

     function calculate() { 
      var score = 0; 
      fields.each(function() { 
      score += +$(this).val(); 
      }); 
      $('#hidden_score').val(score.toFixed(0)); 
     } 
     } 

コードは、それらを試してみて、トリガする機能の下に配置しました試しました:

window.onload = function() { 
    calculateScore(); 
    calculateHiddenScore(); 
}; 

ページが読み込まれたときに、これら2つの機能をどのように起動できますか?どうもありがとう。

+1

どのように機能が実行されていないと判断していますか(他の理由で失敗するのではなく)?確認するために 'console.log'ステートメントを追加しましたか?デベロッパーツールコンソールにエラーメッセージが表示されますか? – Quentin

+0

あらかじめ設定されているフィールドには、合計すると合計が0より大きい値が含まれているため、それらが実行されていないと判断しました。ドロップダウンオプションを変更すると、現在はです。 – Ben

+0

機能が呼び出されています。あなたは、彼らが「変革」を呼びかけるものを呼び出すだけではありません。 –

答えて

1

アイテムが事前入力されていても、DOM readyはonchangeイベントをトリガーしません。
したがって、あなたのようなビットをあなたのスクリプトを変更する必要があります。

function calculateScore() { 
    var fields = $('.form-group #input'); // Cache only! 

    function calculate() { 
    var score = 0; 
    fields.each(function() { 
     score += +$(this).val(); 
    }); 
    $('#score').html(score.toFixed(0)); 
    $('#hidden_score').val(score.toFixed(0)); 
    } 

    calculate();     // Calculate ASAP (on DOM ready) 
    fields.on("change", calculate); // and also on change 
} 


jQuery(function($) { // DOM is ready and $ alias secured 
    calculateScore(); // Trigger 
    // other jQuery code here 
}); 

PS:上記のビットが改善されている場合でもところで、それは1つのID #input要素の上eachを使用してループにあまり意味がありますが - 私はあなたにそれを残すでしょう...

+0

ありがとう@ロコC. Buljan! – Ben

+1

@benあなたは大歓迎です!どうも –

関連する問題