php怎么实现选择了分类,子分类才能出现对应的内容。最好是 thinkphp。谢谢
1个回答
展开全部
thinkphp jquery与ajax实现省市县三级联动菜单
本示例以省市区三级联动菜单为例:
实现步骤:
第一:先默认从数据库中读取所有的省份。
第二:通过jquery中的change事件,当省份的内容发生改变时,执行change事件,
通过jquery 获得被选中的省份的value值,再后通过异步加载数据。
第三:与第二步相似,当用户选择城市时,会触发change事件,通过jquery 获得被选中的城市的value值,再次进行异步加载数据。
具体示例代码如下:
RecruitmentAction.class.php
<?php
class RecruitmentAction extends Action{
public function chacity(){
$code=I('post.code');
$city=M('city')->where(array('provincecode'=>$code))->select();
echo "<option value='-1'>请选择城市</option>";
if($city){
foreach($city as $c){
echo "<option value=".$c['code'].">".$c['name']."</option>";
}
}
}
public function chaarea(){
$code=I('post.code');
$area=M('area')->where(array('citycode'=>$code))->select();
echo "<option value='-1'>请选择区</option>";
if($area){
foreach($area as $a){
echo "<option value=".$a['code'].">".$a['name']."</option>";
}
}
}
public function chacitydefault(){
$code=I('post.code');
$city=M('city')->where(array('provincecode'=>$code))->select();
if($city){
foreach($city as $c){
echo "<option value=".$c['code'].">".$c['name']."</option>";
}
}
}
public function chaareadefault(){
$code=I('post.code');
$area=M('area')->where(array('citycode'=>$code))->select();
if($area){
foreach($area as $a){
echo "<option value=".$a['code'].">".$a['name']."</option>";
}
}
}
?>
sendrecruitment.php
<html>
<head>
<meta charset="utf-8"/>
<title>省市县三级联动菜单</tilte>
<scirpt src="libs.baidu.com/jquery/1.11.1/jquery.min.js"></script>
<script>
$(function(){
$('#sheng').change(function(){
var code=$('#sheng option:selected').val();
$.post('__URL__/chacity',{'code':code},function(data){
$('#city').html(data);
})
})
$('#city').change(function(){
var code=$('#city option:selected').val();
$.post('__URL__/chaarea',{'code':code},function(data){
$('#area').html(data);
})
})
var code=$('#sheng option').eq(0).val();
$.post('__URL__/chacitydefault',{'code':code},function(data){
$('#city').html(data);
})
var areacode=110100;
$.post('__URL__/chaareadefault',{'code':areacode},function(data){
$('#area').html(data);
})
})
</script>
</head>
<body>
<?php
$m=M('province');
$p=$m->order('id asc')->select();
?>
<!-- <input type="text" name="jobplace" value="" />
--> <select name="job_province" id="sheng" style="width:100px;">
<?php
if($p){
foreach($p as $v){
?>
<option value="<?php echo $v['code'];?>"><?php echo $v['name'];?></option>
<?php
}
}
?>
</select>
<select name="job_city" id="city" style="width:100px;"></select>
<select name="job_area" id="area" style="width:100px;"></select>
</body>
</html>
注:本示例中,控制器部分:chacitydefault(),chaareadefault()方法是为了默认页面加载时,执行一次,让省,市,与区进行显示。
这是我以前学习时找的的一个DEMO 你可以参考一下
就该对你有用
希望能够帮到你
本示例以省市区三级联动菜单为例:
实现步骤:
第一:先默认从数据库中读取所有的省份。
第二:通过jquery中的change事件,当省份的内容发生改变时,执行change事件,
通过jquery 获得被选中的省份的value值,再后通过异步加载数据。
第三:与第二步相似,当用户选择城市时,会触发change事件,通过jquery 获得被选中的城市的value值,再次进行异步加载数据。
具体示例代码如下:
RecruitmentAction.class.php
<?php
class RecruitmentAction extends Action{
public function chacity(){
$code=I('post.code');
$city=M('city')->where(array('provincecode'=>$code))->select();
echo "<option value='-1'>请选择城市</option>";
if($city){
foreach($city as $c){
echo "<option value=".$c['code'].">".$c['name']."</option>";
}
}
}
public function chaarea(){
$code=I('post.code');
$area=M('area')->where(array('citycode'=>$code))->select();
echo "<option value='-1'>请选择区</option>";
if($area){
foreach($area as $a){
echo "<option value=".$a['code'].">".$a['name']."</option>";
}
}
}
public function chacitydefault(){
$code=I('post.code');
$city=M('city')->where(array('provincecode'=>$code))->select();
if($city){
foreach($city as $c){
echo "<option value=".$c['code'].">".$c['name']."</option>";
}
}
}
public function chaareadefault(){
$code=I('post.code');
$area=M('area')->where(array('citycode'=>$code))->select();
if($area){
foreach($area as $a){
echo "<option value=".$a['code'].">".$a['name']."</option>";
}
}
}
?>
sendrecruitment.php
<html>
<head>
<meta charset="utf-8"/>
<title>省市县三级联动菜单</tilte>
<scirpt src="libs.baidu.com/jquery/1.11.1/jquery.min.js"></script>
<script>
$(function(){
$('#sheng').change(function(){
var code=$('#sheng option:selected').val();
$.post('__URL__/chacity',{'code':code},function(data){
$('#city').html(data);
})
})
$('#city').change(function(){
var code=$('#city option:selected').val();
$.post('__URL__/chaarea',{'code':code},function(data){
$('#area').html(data);
})
})
var code=$('#sheng option').eq(0).val();
$.post('__URL__/chacitydefault',{'code':code},function(data){
$('#city').html(data);
})
var areacode=110100;
$.post('__URL__/chaareadefault',{'code':areacode},function(data){
$('#area').html(data);
})
})
</script>
</head>
<body>
<?php
$m=M('province');
$p=$m->order('id asc')->select();
?>
<!-- <input type="text" name="jobplace" value="" />
--> <select name="job_province" id="sheng" style="width:100px;">
<?php
if($p){
foreach($p as $v){
?>
<option value="<?php echo $v['code'];?>"><?php echo $v['name'];?></option>
<?php
}
}
?>
</select>
<select name="job_city" id="city" style="width:100px;"></select>
<select name="job_area" id="area" style="width:100px;"></select>
</body>
</html>
注:本示例中,控制器部分:chacitydefault(),chaareadefault()方法是为了默认页面加载时,执行一次,让省,市,与区进行显示。
这是我以前学习时找的的一个DEMO 你可以参考一下
就该对你有用
希望能够帮到你
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询