【发布时间】:2015-06-08 16:16:15
【问题描述】:
好的,我在我的网站上有一个JQVMAP,可以为搜索框选择状态。在我添加了 Clear 函数之前,一切都很好。
我还必须合并来自成员 HardCode Link to the patch 的补丁
找到解决办法,将 jqvmap.js 文件中的第 466 行更改为:
regionClickEvent = $.Event('regionClick.jqvmap'); jQuery(params.container).trigger(regionClickEvent, [code, mapData.pathes[code].name]);
这是我初始化它的方式:
// with this Code it will select states and change the color of selected states plus save the codes of selected states into a hidden field
$('#omap').vectorMap(
{
map: 'usa_en',
backgroundColor: '#fff',
borderColor: '#000',
borderWidth: 4,
color: '#f4f3f0',
enableZoom: false,
hoverColor: '#fece2f',
hoverOpacity: null,
normalizeFunction: 'linear',
scaleColors: ['#b6d6ff', '#005ace'],
selectedColor: '#db9b15',
selectedRegion: null,
showTooltip: true,
multiSelectRegion: true,
onRegionClick: function(element, code, region) {
if(highlight[code]!=='#db9b15'){
highlight[code]='#db9b15';
origin = $('#search_origin_states');
states = origin.val();
if (states == ""){
origin.val(code);
} else {
origin.val(states + "," + code);
}
} else {
highlight[code]='#f4f3f0';
states = origin.val();
if (states.indexOf(","+code) >= 0) {
states = states.replace(","+code,"");
origin.val(states);
} else if (states.indexOf(code+",") >= 0){
states = states.replace(code+",","");
origin.val(states);
} else {
states = states.replace(code,"");
origin.val(states);
}
}
$('#omap').vectorMap('set', 'colors', highlight);
}
});
我以前必须单击每个状态才能清除它。但是我写了一个脚本,一键清除。
function search_map_clear(field, map) {
var states = $('#search_' + field + '_states');
var sel_states = states.val();
var highlight2 = [];
$.each(sel_states.split(','), function (i, code) {
highlight2[code] = '#f4f3f0';
$('#' + map).vectorMap('set', 'colors', highlight2);
});
states.val("");
}
这会将所有颜色更改回原始颜色,但显然它不会清除selectedRegions,因为在清除后,如果我选择任何其他状态,我更改回原始颜色的所有状态都会重新显示。
我的问题是:
如何清除选定的状态,这样我就可以选择不同的状态,而无需单击之前选择的每个状态
更新
我已经能够从控制台运行此命令,并且可以选择和取消选择状态...但它不会取消选择单击选择的状态。
$('#omap').vectorMap('select', 'ar');
$('#omap').vectorMap('deselect', 'ar');
我需要清除被点击的状态...
这是我的 jsFiddle,它将向您展示正在发生的事情:
JSFIDDLE DEMO
【问题讨论】:
-
那个小提琴很难使用:它抱怨在 HTML 区域的任何编辑上都有
<script>标签,外部 jqvmap 资源以错误的顺序加载(我在页面加载时看到TypeError: jQuery.fn.vectorMap is not a function),并且@HardCode 的补丁是否包含在您从 jqvmap.com 链接的脚本中?解决这些问题可能会产生更多帮助…… -
您可以直接访问我的页面@@transportunl.com 只需创建一个用户名和密码...任何内容,它都会带您进入我的搜索...它在左侧,无论是起点还是终点.. . 我会提供演示信用,但不确定有多少人想尝试...
-
所有内容都包含在我的网站上,它仍在开发中......所以完成后数据库将被清除。如果您需要查看带有选定状态的文本框...将隐藏字段更改为文本。它就在地图的正下方。
-
清除链接对我来说很好用。有什么问题?
-
点击清除链接后尝试选择另一个状态。它也会突出显示所有其他状态...
标签: javascript jquery jqvmap