解决方案 »
- PHP 变量为空
- 关于邮箱注册成功的验证如何实现?
- 返回前页如何不刷新?
- 有没办法不用浏览器建立websocket的链接???
- php中加入javascript想要没有输入title的时候跳出对话框以后在回到ckeditor里面重新编辑。
- 这个 有关 apache 的应用程序错误是什么意思。
- 简单的php 2 个小题,求按照要求做出来,谢谢。
- PHPExcel 导出excel文件 打开显示“发现不可读取的内容”
- IIS 打开网站提示错误500 php-cgi.exe - FastCGI 进程意外退出
- 查询更新不了,请大神指点(急、急、急)
- 新手求教下 PHP PEAR DB 的问题
- 求PHP网站实例
http://blog.csdn.net/ykm0722/article/details/6064559
http://www.cnblogs.com/freespider/archive/2010/08/30/1812669.html别人讲N遍,不如自己动手做一遍。
或者留个邮箱直接发给你
<script language="JavaScript" src="location.js"></script>
<div class="main">
<select id="loc_province" name="sheng" style="width: 80px;"></select>
<select id="loc_city" name="shi" style="width:100px;"></select>
<select id="loc_town" name="qu" style="width:120px;"></select>
<input type="hidden" name="location_id" />
</div> 这个是html页面。
area.jsfunction showLocation(province , city , town) {
var loc = new Location();
var title = ['省份' , '地级市' , '市、县、区'];
$.each(title , function(k , v) {
title[k] = '<option value="">'+v+'</option>';
})
$('#loc_province').append(title[0]);
$('#loc_city').append(title[1]);
$('#loc_town').append(title[2]);
$('#loc_province').change(function() {
$('#loc_city').empty();
$('#loc_city').append(title[1]);
loc.fillOption('loc_city' , '0,'+$('#loc_province').val());
$('#loc_town').empty();
$('#loc_town').append(title[2]);
//$('input[@name=location_id]').val($(this).val());
})
$('#loc_city').change(function() {
$('#loc_town').empty();
$('#loc_town').append(title[2]);
loc.fillOption('loc_town' , '0,' + $('#loc_province').val() + ',' + $('#loc_city').val());
//$('input[@name=location_id]').val($(this).val());
})
$('#loc_town').change(function() {
$('input[@name=location_id]').val($(this).val());
})
if (province) {
loc.fillOption('loc_province' , '0' , province);
if (city) {
loc.fillOption('loc_city' , '0,'+province , city);
if (town) {
loc.fillOption('loc_town' , '0,'+province+','+city , town);
}
}
} else {
loc.fillOption('loc_province' , '0');
}
}location.jsfunction Location() {
this.items = {
'0':{1:'北京市',22:'天津市',44:'上海市',66:'重庆市',108:'河北省',406:'山西省',622:'内蒙古',804:'辽宁省',945:'吉林省',1036:'黑龙江省',1226:'江苏省',1371:'浙江省',1500:'安徽省',1679:'福建省',1812:'江西省',1992:'山东省',2197:'河南省',2456:'湖北省',2613:'湖南省',2822:'广东省',3015:'广西',3201:'海南省',3235:'四川省',3561:'贵州省',3728:'云南省',3983:'西藏',4136:'陕西省',4334:'甘肃省',4499:'青海省',4588:'宁夏',4624:'新疆',4802:'香港',4822:'澳门',4825:'台湾省'},
'0,1':{2:'北京市'},.............};
}Location.prototype.find = function(id) {
if(typeof(this.items[id]) == "undefined")
return false;
return this.items[id];
}Location.prototype.fillOption = function(el_id , loc_id , selected_id) {
var el = $('#'+el_id);
var json = this.find(loc_id);
if (json) {
var index = 1;
var selected_index = 0;
$.each(json , function(k , v) {
var option = '<option value="'+k+'">'+v+'</option>';
el.append(option);
if (k == selected_id) {
selected_index = index;
}
index++;
})
el.attr('selectedIndex' , selected_index);
}
}
有不懂的问题,再贴出来吧
http://www.helloweba.com/demo/cityselect/这个是用js实现,效果来的快。
用 jquery 不超过 4 行,如果数据结构设计的好,一行也就可以了php 部分不算数据库连接,也就 3、4 行代码吧不至于搞得那么复杂吧?一天了。还没头绪
//创建AJAX 引擎
function getXmlHttpObject(){
var XmlHttpRequest;
if(ActiveXObject){
//ie
XmlHttpRequest=new ActiveXObject("Microsoft.XMLHTTP");
}else{
//火狐,opera
XmlHttpRequest=new XMLHttpRequest();
}
return XmlHttpRequest;
}
var myXmlHttpRequest="";
//根据省级信息获取城市
function getCities(){
myXmlHttpRequest=getXmlHttpObject();
if(myXmlHttpRequest){
var url="showCitiesPro.php";//post方式
var data="type=city&province="+$('province').value; myXmlHttpRequest.open("post",url,true);//异步
myXmlHttpRequest.setRequestHeader("content-type","application/x-www-form-urlencoded");
//指定回调函数
myXmlHttpRequest.onreadystatechange=chuliCity;
//发送
myXmlHttpRequest.send(data);
}
}
function chuliCity(){
if(myXmlHttpRequest.readyState==4){
//status==200 才是真正的成功
if(myXmlHttpRequest.status==200){
//取出服务器回送的数据
var cities=myXmlHttpRequest.responseXML.getElementsByTagName("name");
var codes=myXmlHttpRequest.responseXML.getElementsByTagName("code"); //每次执行都将id为city的select长度清零
$('city').length=0;
var myOption=document.createElement("option");
myOption.innerText="---城市---";
$('city').appendChild(myOption);
//遍历并取出城市
for(var i=0;i<cities.length;i++){
var city_name=cities[i].childNodes[0].nodeValue;
var city_code=codes[i].childNodes[0].nodeValue;
//创建新的元素option
var myOption=document.createElement("option");
myOption.value=city_code;
//赋文本
myOption.innerText=city_name;
//添加到 id为city的select里
$('city').appendChild(myOption);
}
}
}
}
//根据市级获取县级
function getArea(){
myXmlHttpRequest=getXmlHttpObject();
if(myXmlHttpRequest){
var url="showCitiesPro.php";//post方式
var data="type=area&city="+$('city').value; myXmlHttpRequest.open("post",url,true);//异步
myXmlHttpRequest.setRequestHeader("content-type","application/x-www-form-urlencoded");
//指定回调函数
myXmlHttpRequest.onreadystatechange=chuliArea;
//发送
myXmlHttpRequest.send(data);
}
}
function chuliArea(){
if(myXmlHttpRequest.readyState==4){
//status==200 才是真正的成功
if(myXmlHttpRequest.status==200){
//取出服务器回送的数据
var cities=myXmlHttpRequest.responseXML.getElementsByTagName("name");
var codes=myXmlHttpRequest.responseXML.getElementsByTagName("code"); //每次执行都将id为city的select长度清零
$('area').length=0;
var myOption=document.createElement("option");
myOption.innerText="---县城---";
$('area').appendChild(myOption);
//遍历并取出城市
for(var i=0;i<cities.length;i++){
var city_name=cities[i].childNodes[0].nodeValue;
var city_code=codes[i].childNodes[0].nodeValue;
//创建新的元素option
var myOption=document.createElement("option");
myOption.value=city_code;
//赋文本
myOption.innerText=city_name;
//添加到 id为area的select里
$('area').appendChild(myOption);
}
}
}
}
//获取对象的函数
function $(id){
return document.getElementById(id);
}</script>这是html里的js代码 <td width="120">城市</td>
<td width="300">
<select id="province" onChange="getCities();" name="province">
<option value="">---省---</option>
<?php
require_once(CP_PATH.'ext/process.php'); getProvince();
?>
</select> <select id="city" onChange="getArea();" name="city">
<option value="">---城市---</option>
</select> <select id="area" name="area">
<option value="">---县城---</option>
</select>
switch($_POST['type']) {
case 'shi':
$tbl = '市表';
$where = "pid='$_POST[id]'";
break;
case 'xian':
$tbl = '县表';
$where = "pid='$_POST[id]'";
break;
default:
$tbl = '省表';
$where = "1";
}
$sql = "select concat('<option value=\"', id, '\">', name, '</optipn') from $tbl where $where";
$rs = mysql_query($sql);
while(list($r) = mysql_fetch_row($rs)) $row[] = $r;
echo join('', $row);
js 部分 需加载 jquery
$(function() {
$('#sheng').change(function() {
$('#shi').load(url, {type:'shi', id:$(this.val()});
});
$('#shi').change(function() {
$('#xian').load(url, {type:'xian', id:$(this.val()});
}); $('#sheng').load(url, {type:sheng'});
});HTML部分
<select id="sheng"><option value="">---省---</option></select>
<select id="shi"><option value="">---市---</option></select>
<select id="xian"><option value="">---县---</option></select>
给你一个实际在线的例子吧 www.35dalu.com/info/fabu 看看里面有2个省市区 三级联动。