如何使用输入字段将值插入数组?

时间:2014-12-15 21:10:57

标签: javascript jquery html input charts

我有一个显示两列数据的图表。页面加载时,我需要为图表中的两个条形显示0。然后我想让控件给用户使用两个文本框更改值。 可能使用'keyup',因此用户无需点击提交按钮。

var barvalues = [0,0];

我打算使用HTML / CSS和JS,JQUERY。我可以使用任何图表,只要它不是HTML5。用户来自IE 8,9,10和11.我遇到的问题是将输入字段'on-the-fly'中的数据绑定到barvalues数组。我该怎么做?如何动态更改/修改数组的值,以便每当我从输入框中点击选项卡时图表都会更新?谢谢!

2 个答案:

答案 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个输入框绑定到图表中的相应栏 您可以通过向上/向下箭头键或更改值来更改值,图表将在“即时”更新

http://jsfiddle.net/46jad9xk

<强> 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]

    }]
});  
});