我有一个显示两列数据的图表。页面加载时,我需要为图表中的两个条形显示0。然后我想让控件给用户使用两个文本框更改值。 可能使用'keyup',因此用户无需点击提交按钮。
var barvalues = [0,0];
我打算使用HTML / CSS和JS,JQUERY。我可以使用任何图表,只要它不是HTML5。用户来自IE 8,9,10和11.我遇到的问题是将输入字段'on-the-fly'中的数据绑定到barvalues数组。我该怎么做?如何动态更改/修改数组的值,以便每当我从输入框中点击选项卡时图表都会更新?谢谢!
答案 0 :(得分:1)
http://jsfiddle.net/r3ou2b9q/5/
<强> HTML:强>
<div id="bar_graph_wrapper">
<div id="bar1" class="bars"></div>
<div id="bar2" class="bars"></div>
</div>
<input type="text" value="0" class="bar_val" id="bar1_val" />
<input type="text" value="0" class="bar_val" id="bar2_val" />
<强> CSS:强>
#bar_graph_wrapper {
height:300px;
position:relative;
width:100px
}
.bars {
width:50%;
height:0;
float:left;
position:absolute;
bottom:0;
}
#bar1 {
background-color:red
}
#bar2 {
background-color:blue;
right:0
}
<强> JQ:强>
function setValue(b1, b2) {
var maxValue = 100;
if (b1 > maxValue) maxValue = b1;
if (b2 > maxValue) maxValue = b2;
var perc1 = b1 * 100 / maxValue;
var perc2 = b2 * 100 / maxValue;
$('#bar1').animate({
height: perc1 + "%"
}, 500)
$('#bar2').animate({
height: perc2 + "%"
}, 500)
}
$('.bar_val').keyup(function () {
var val1 = ~~$('#bar1_val').val();
var val2 = ~~$('#bar2_val').val();
setValue(val1, val2)
});
答案 1 :(得分:0)
使用jQuery和JS图表包HighCharts将它们组合在一起。 只有2个输入框绑定到图表中的相应栏 您可以通过向上/向下箭头键或更改值来更改值,图表将在“即时”更新
<强> HTML 强>
<script src="http://code.highcharts.com/highcharts.js"></script>
<script src="http://code.highcharts.com/modules/exporting.js"></script>
<div id="container" style="min-width: 310px; height: 400px; margin: 0 auto"></div>
Changes bar 1 <input type='text' name='series-1' value=10>
Changes bar 2 <input type='text' name='series-2' value=10>
<强> JS:强>
$(function () {
$('input').keyup(function(event) {
var v = parseInt($(this).val(),10);
if(event.which == 38){//arrow up
v++
}
else if(event.which == 40){//arrow down
if(v>0)v--
}
var chart = $('#container').highcharts(),
series = chart.get($(this).attr('name'));
$(this).val(v)
series.setData([v]);
})
var chart1 = $('#container').highcharts({
chart: {
type: 'column'
},
xAxis: {
categories: [
'Bars'
]
},
yAxis: {
min: 0,
title: {
text: 'User setting'
}
},
series: [{
id: 'series-1',
name: 'Series 1',
data: [10]
}, {
id: 'series-2',
name: 'Series 2',
data: [10]
}]
});
});