在加载时加载或激活ChartJS

时间:2016-05-31 14:30:52

标签: javascript jquery html5 forms chart.js

我使用表单设置Chart.js,以便从表单中获取输入字段,单击“提交/更新”按钮后,它会使用输入字段中的数字作为数据点生成圆环图。

问题是如何让表单或Chart.js运行一次并生成一个圆环图,其中输入字段数字在页面上(在页面加载)。

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

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

编辑:我已经走了,创造了一个重​​新创造问题的小提琴。

   $(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
        });

    });

});

1 个答案:

答案 0 :(得分:0)

您可以将绘制图表的代码放在函数中,并在$(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不会产生任何影响。