Flot:如何使用onchange而不是onclick(复选框)来关闭系列?

时间:2012-02-21 13:02:25

标签: flot

我知道可以使用图例打开/关闭flot系列,如this页上所示。

在该示例中,更改似乎是click事件的结果。

我正在尝试在使用onchange事件时使其工作。

如果我(添加然后再单击)按钮...

<input type="button" value="Disable USA" onclick="document.getElementById('idusa').checked = false;">

...正在禁用该复选框,但图表未重新绘制。

我试图通过两种方式解决这个问题:

  1. 我将plotAccordingToChoices();添加到按钮的onclick,然后
  2. 我更改了choiceContainer.find("input").click(plotAccordingToChoices);代码:尝试使用change代替click
  3. 这不起作用。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

这是一个非常棘手的问题,据我所知(我不知道那么多)从按钮更改复选框不会触发其更改事件,但由于您正在使用某个功能,因此您可以更改属性,然后触发重绘功能。我还将.click()更改为.change()只是为了效果:

从Flot代码中,我为每个元素添加了一个类,并将该类设置为具有更改事件:

choiceContainer.append('<br/><input type="checkbox" name="'
 + key+'" checked="checked" id="id' + key + '" class="legend">' +
 '<label for="id' + key + '">' + val.label + '</label>');
$(".legend").change(plotAccordingToChoices);

现在为你的按钮,我让它切换到美国:

    $("#clicker").click( function(){
    if($("#idusa").is(":checked"))
        $("#idusa").attr('checked', false);
    else
        $("#idusa").attr('checked',true)
    plotAccordingToChoices();
    });

修改 您可以使用.trigger('change')来触发更改事件。

    $("#clicker").click( function(){
    if($("#idusa").is(":checked"))
        $("#idusa").attr('checked', false);
    else
        $("#idusa").attr('checked',true)
    $("#idusa").trigger('change');
    });

最后我将按钮更改为按钮:

<button id="clicker">Disable USA</button> 

您可以稍微修改一下,如果需要,可以为每个复选框添加一个按钮。 我希望这适合你。