在加载时加载或激活 ChartJS

Loading or Activating ChartJS on Load

我已经 Chart.js 设置了一个表单,以便它从表单中获取输入字段,并在单击 Submit/Update 按钮后,它使用输入字段中的这些数字作为数据生成圆环图点.

问题是如何将表格或 Chart.js 转换为 运行 一次 并生成一个带有输入字段数字 [=21] 的圆环图=]当它在页面上时(在页面加载时)。

表单输入字段已通过 HTML5 本地存储填充 numbers/data。

我试过了jQuery.submit();在页面加载但没有任何反应。我感谢任何帮助。谢谢。

编辑:我已经创建了一个 fiddle 来重现问题。

   $(document).ready(function () {

    $("#submit-btn").click(function (e) {

        e.preventDefault();

        var outputyearly = $('#outputyearly');
        var amount = parseInt($('#amount').val().replace(/,/g, ''), 10);
        var rate = parseFloat($('#rate').val(), 10);
        var term = parseFloat($('#term').val(), 10);

        // Some math calculations code

        if (window.onload.myDoughnutChart != null) {
            window.onload.myDoughnutChart.destroy();
        }

        var ctx = document.getElementById("myChart").getContext("2d");

        window.onload.myDoughnutChart = new Chart(ctx, {
            type: 'doughnut',
            data: data,
            options: options
        });

    });

});

您可以将绘制图表的代码放在一个函数中,然后在 $(document).ready$("#submit-btn").click 事件上调用该函数,如下所示:

function drawChart() {
  var outputyearly = $('#outputyearly');
  var amount = parseInt($('#amount').val().replace(/,/g, ''), 10);
  var rate = parseFloat($('#rate').val(), 10);
  var term = parseFloat($('#term').val(), 10);

  //Destroy the dougnut chart here, not sure how it's accessible, but it won't work through window.onload

  var ctx = document.getElementById("myChart").getContext("2d");

  new Chart(ctx, {
      type: 'doughnut',
      data: data,
      options: options
  });
}

$(document).ready(function() {
  drawChart();
  $("#submit-btn").click(function (e) {
     e.preventDefault();
     drawChart();
   });
 });

请注意,$(document).ready 已经强制其中的代码在页面完成时执行,因此将 window.onload 放入其中不会有任何区别。