首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从检查/未检查的输入html调用一些javascript

从检查/未检查的输入html调用一些javascript
EN

Stack Overflow用户
提问于 2014-02-08 08:26:52
回答 1查看 403关注 0票数 0

到目前为止,我的代码如下:

http://jsfiddle.net/YBGm4/4/

JAVASCRIPT:

代码语言:javascript
复制
    $(function () {
    $('#world-map').vectorMap({
        map: 'world_mill_en',
        normalizeFunction: 'polynomial',
        hoverOpacity: 0.9,
        hoverColor: false,
        markerStyle: {
            initial: {
                fill: '#F8E23B',
                stroke: '#383f47'
            }
        },
        backgroundColor: '#000000',
        zoomMax: 30,

        <!--DO THIS ON CHECKMARK (so on load)-->
        /*
        series: {
            regions: [{
                values: countriesvisited,
                scale: ['#B1C9C0', '#41a62a'],
                normalizeFunction: 'polynomial'
            }]
        },
        */
        <!--------------------------->

        <!--DO THIS ON UNCHECKMARK-->
        /*
        series: {
            regions: [{
                values: countriesvisited,
                scale: ['#B1C9C0'],
                normalizeFunction: 'polynomial'
            }]
        },
        */
        <!--------------------------->

        markers: [{
            latLng: [49.1840, -123.0110],
            name: 'Current City: Vancouver'
        }]
    });
});
$(document).ready(function () {
    $('#myForm').fancyfields();
});

HTML

代码语言:javascript
复制
    <div id="world-map" style="width: 500px; height: 400px"></div>
<br/>
<h2>Checkboxes</h2>
<div id="myForm">
    <input id="Checkbox" name="Checkbox" checked="checked" type="checkbox" style="display; none;" />
    <label>Countries I have Been To</label>
</div>

我有一个checkbox对象。当被选中时,我想在下面执行代码

如果未选中该选项,则在

这两个代码都对应于/* */区域中的代码。如果这有意义的话。

我认为看一看代码就会明白我想要做什么。为了简单起见,我尽可能地去掉了它。

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2014-02-08 09:12:19

这是一个可能的解决方案。请参阅jsFiddle:http://jsfiddle.net/YBGm4/9/

下面是我在jQuery ready事件中添加的一些带注释的代码:

代码语言:javascript
复制
// First we need to get mapObject to manipulate the map
// This was shown here: http://jvectormap.com/examples/usa-unemployment/
var mapObject = $('#world-map').vectorMap('get', 'mapObject');

// Now you need to add change event on your checkboxes. For simplicity, I just 
// did checkbox 1
// Now you can't use jQuery change event, since you are using `fancyfields`
// See docs here: http://www.jqfancyfields.com/examples-docs/
$("#Checkbox1").fancyfields("bind", "onCheckboxChange", function (input, isChecked){
    if (isChecked) {
         // If the checkbox is checked, we setScale to the original values
         mapObject.series.regions[0].setScale(['#B1C9C0', '#41a62a']);                         
    } else {
         // If the checkbox is not checked, we setScale to the some other values. 
         // I changed them, because the ones you used weren't showing up clearly.
         mapObject.series.regions[0].setScale(['#00000', '#ff0000']);               
    }
});

注意,我在这里只使用了setScale,因为您的地图区域更改只处理了scale参数。如果您需要更改区域值,您可以这样做:mapObject.series.regions[0].setValues(countriesvisited)或其他任何东西。

还请注意,我只给出了一个使用1复选框的示例。我假设您知道如何将您的逻辑添加到其余的复选框中。

编辑2

以下是解释正在发生的事情的尝试:

首先,您需要直接编辑地图对象,这意味着您需要从vectorMap类获取它。无论出于什么原因,文档都没有解释这一点。但这就是美国的做法--就业的例子。

代码语言:javascript
复制
var mapObject = $('#world-map').vectorMap('get', 'mapObject');

现在我们有了地图对象,我们可以更改您设置的系列和区域数据。再次参考usa-employment示例,了解它是如何工作的。此外,console.log有助于查看对象上有哪些方法和属性。

根据您的配置,您只有一个地域,所以我们可以这样访问它:

代码语言:javascript
复制
var yourRegion = mapObject.series.regions[0];

现在,region对象具有一些属性,您可以使用控制台进行检查:

代码语言:javascript
复制
console.log(yourRegion);

如果你仔细观察,你会发现它有两个有用的方法:setScalesetValue。在这种情况下,您只需更改比例,因此我们可以执行以下操作:

代码语言:javascript
复制
mapObject.series.regions[0].setScale(['#00000', '#ff0000']); 

就你的例子来说,你在数组中只有颜色值,它似乎对我不起作用。也许您需要在数组中有多个值?

现在,另一个问题是如何使用复选框。您几乎可以复制jqfancyfields文档中给出的示例:http://www.jqfancyfields.com/examples-docs/。不幸的是,该插件使得默认的jquery更改事件复选框不起作用。

语法如下所示:

代码语言:javascript
复制
$("#you-checkbox-element-id").fancyfields("bind", "onCheckboxChange", function (input, isChecked){
    if (isChecked) {
     // Logic for if checked                      
    } else {
     // Logic for if not checked              
    }
});

希望这能让你对所有的部分都更清楚。如果不是,就问一下。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21640210

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档