重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
HTML
十年的惠安网站建设经验,针对设计、前端、开发、售后、文案、推广等六对一服务,响应快,48小时及时工作处理。成都全网营销推广的优势是能够根据用户设备显示端的尺寸不同,自动调整惠安建站的显示方式,使网站能够适用不同显示终端,在浏览器中调整网站的宽度,无论在任何一种浏览器上浏览网站,都能展现优雅布局与设计,从而大程度地提升浏览体验。创新互联从事“惠安网站设计”,“惠安网站推广”以来,每个客户项目都认真落实执行。
首先在head中载入jquery库和cityselect插件。
script type="text/javascript" src="js/jquery.js"/script
script type="text/javascript" src="js/jquery.cityselect.js"/script
接下来,我们在#city中,放置三个select,并且三个select分别设置class属性为:prov、city、dist,分别表示省、市、区(县)三个下拉框。注意如果只想实现省市二级联动,则去掉第三个dist的select即可。
div id="city"
select class="prov"/select
select class="city" disabled="disabled"/select
select class="dist" disabled="disabled"/select
/div
jQuery
调用cityselect插件非常简单,直接调用:
$("#city").citySelect();
自定义参数调用,设置默认省市区。自定义参数调用,设置默认省市区。
$("#city").citySelect({
url:"js/city.min.js",
prov:"湖南", //省份
city:"长沙", //城市
dist:"岳麓区", //区县
nodata:"none" //当子集无数据时,隐藏select
});
当然,你还可以扩展,自定义下拉列表选项数据,你可以根据需要设置下拉内容,注意数据格式一定要为JSON格式。
$("#city").citySelect({
url:{"citylist":[
{"p":"前端技术","c":[{"n":"HTML"},{"n":"CSS","a":[{"s":"CSS2.0"},{"s":"CSS3.0"}]},
{"n":"JAVASCIPT"}]},
{"p":"编程语言","c":[{"n":"C"},{"n":"C++"},{"n":"PHP"},{"n":"JAVA"}]},
{"p":"数据库","c":[{"n":"Mysql"},{"n":"SqlServer"},{"n":"Oracle"}]},
]},
prov:"",
city:"",
dist:"",
nodata:"none"
});
你还可以利用PHP等后台语言将数据库中的数据转换成JSON格式,然后使用url参数指向后台地址也能实现无刷新联动效果。
$("#city").citySelect({
url:"data.php"
});
demo:
select name="cityCode" id="cityCode" class="span2"
option value="beijing"北京/option
option value="sanya" selected="selected"三亚/option
option value="shanghai"上海/option
/select
jquery获取方法选中的城市三亚:
$('#cityCode').find("option:selected").val()
首先$('#cityCode')根据id找到对应的select元素,然后通过jquery的find方法找到被选中的option元素,然后val()直接获取option的value。
或者
$("#cityCode option:selected").val();
下面的写法更简洁、条件拼接,实际与上面的是一致。
需要核心文件jquery.cityselect.js,通过ajax访问获取省地市数据文件
[javascript] view plain copy
/*
Ajax 三级省市联动
日期:2012-7-18
settings 参数说明
-----
url:省市数据josn文件路径
prov:默认省份
city:默认城市
dist:默认地区(县)
nodata:无数据状态
required:必选项
------------------------------ */
(function($) {
$.fn.citySelect = function(settings) {
if (this.length 1) {
return;
}
;
// 默认值
settings = $.extend({
url: "city.min.js",
prov: null,
city: null,
dist: null,
nodata: null,
required: true
}, settings);
var box_obj = this;
var prov_obj = box_obj.find(".prov");
var city_obj = box_obj.find(".city");
var dist_obj = box_obj.find(".dist");
var prov_val = settings.prov;
var city_val = settings.city;
var dist_val = settings.dist;
var select_prehtml = (settings.required) ? "" : "option value=''请选择/option";
var city_json;
// 赋值市级函数
var cityStart = function() {
var prov_id = prov_obj.get(0).selectedIndex;
if (!settings.required) {
prov_id--;
}
;
city_obj.empty().attr("disabled", true);
dist_obj.empty().attr("disabled", true);
if (prov_id 0 || typeof (city_json.citylist[prov_id].c) == "undefined") {
if (settings.nodata == "none") {
city_obj.css("display", "none");
dist_obj.css("display", "none");
} else if (settings.nodata == "hidden") {
city_obj.css("visibility", "hidden");
dist_obj.css("visibility", "hidden");
}
;
return;
}
;
// 遍历赋值市级下拉列表
temp_html = select_prehtml;
$.each(city_json.citylist[prov_id].c, function(i, city) {
temp_html += "option value='" + city.n + "'" + city.n + "/option";
});
city_obj.html(temp_html).attr("disabled", false).css({"display": "", "visibility": ""});
distStart();
};
// 赋值地区(县)函数
var distStart = function() {
var prov_id = prov_obj.get(0).selectedIndex;
var city_id = city_obj.get(0).selectedIndex;
if (!settings.required) {
prov_id--;
city_id--;
}
;
dist_obj.empty().attr("disabled", true);
if (prov_id 0 || city_id 0 || typeof (city_json.citylist[prov_id].c[city_id].a) == "undefined") {
if (settings.nodata == "none") {
dist_obj.css("display", "none");
} else if (settings.nodata == "hidden") {
dist_obj.css("visibility", "hidden");
}
;
return;
}
;
// 遍历赋值市级下拉列表
temp_html = select_prehtml;
$.each(city_json.citylist[prov_id].c[city_id].a, function(i, dist) {
temp_html += "option value='" + dist.s + "'" + dist.s + "/option";
});
dist_obj.html(temp_html).attr("disabled", false).css({"display": "", "visibility": ""});
};
var init = function() {
// 遍历赋值省份下拉列表
temp_html = select_prehtml;
$.each(city_json.citylist, function(i, prov) {
temp_html += "option value='" + prov.p + "'" + prov.p + "/option";
});
prov_obj.html(temp_html);
// 若有传入省份与市级的值,则选中。(setTimeout为兼容IE6而设置)
setTimeout(function() {
if (settings.prov != null) {
prov_obj.val(settings.prov);
cityStart();
setTimeout(function() {
if (settings.city != null) {
city_obj.val(settings.city);
distStart();
setTimeout(function() {
if (settings.dist != null) {
dist_obj.val(settings.dist);
}
;
}, 1);
}
;
}, 1);
}
;
}, 1);
// 选择省份时发生事件
prov_obj.bind("change", function() {
cityStart();
});
// 选择市级时发生事件
city_obj.bind("change", function() {
distStart();
});
};
// 设置省市json数据
if (typeof (settings.url) == "string") {
$.getJSON(settings.url, function(json) {
city_json = json;
init();
});
} else {
city_json = settings.url;
init();
}
;
};
})(jQuery);
每次点击时切换要调用的函数。如果点击了一个匹配的元素,则触发指定的第一个函数,当再次点击同一元素时,则触发指定的第二个函数。
随后的每次点击都重复对这两个函数的轮番调用。
首先搜索免费webservice接口,找到天气预报,然后在项目里添加服务引用。
在地址一栏添你网上搜到的XXXX.asmx,点转到下面会多个服务,以后点确定。
然后在新窗口new一个类,就可以调用方法了。