yii实现级联下拉菜单的方法


Posted in PHP onJuly 31, 2014

本文详细讲述了yii实现级联下拉菜单的方法,具体步骤如下:

1.模版中加入如下代码:

<?php
 echo $form->dropDownList($model, 'src_type_id', OrderSrc::options(), array(
 <span style="white-space:pre"> </span>'id' => 'task-order-src-id',
 ));
 echo $form->dropDownList($model, 'src_shop_id', array(''=>'全部'), array(
 <span style="white-space:pre"> </span>'id' => 'task-shop-id',
 ))
?>

在这段代码中,OrderSrc_options() 这个是先读取一个下拉菜单。调用OrderScr model中的options方法。内容如下

public static function options($hasShop = true) {
 $model = new self();
 if($hasShop) $model->hasShop();
 $models = $model->findAll();
 $array = array(''=>'全部');
 foreach($models as $model) {
 $array[$model->src_id] = $model->src_name;
 }
 return $array;
}

2.然后在模版页面中增加JS代码,实现当第一个下拉菜单变化时给第二个下拉菜单进行内容赋值。

<script type='text/javascript'>
$().ready(function(e) {
 $('#task-order-src-id').change(function(e) {
 refreshShops();
 });
 refreshShops();
 function refreshShops() {
 $.get('<?php echo $this->createUrl('getShops')?>', {
  'srcId': $('#task-order-src-id').val()
 }, function(html_content) {
  $('#task-shop-id')
  .html(html_content)
  .find('option[value=<?php echo $model->src_shop_id?>]')
   .attr('selected', 'selected');
 });
 }
});
</script>

在这段JS代码中,实现调取一个程序获取第二个下拉菜单的值(调用Controller中的actionGetShops方法),任何追加到第二个下拉菜单中。

Controller中的actionGetShops方法如下:

public function actionGetShops() {
 $srcId = $_GET['srcId'];
 $array = ThirdpartInterfaceConfig::options($srcId);
 $htmlContent = "<option value=''>全部</options>";
 foreach($array as $k=>$v) {
 $htmlContent .= "<option value='{$k}'>{$v}</option>";
 }
 echo $htmlContent;
}
PHP 相关文章推荐
一个简单的PHP入门源程序
Oct 09 PHP
IIS+fastcgi下PHP运行超时问题的解决办法详解
Jun 20 PHP
php读取大文件示例分享(文件操作类)
Apr 13 PHP
简单分析ucenter 会员同步登录通信原理
Aug 25 PHP
php实现httpRequest的方法
Mar 13 PHP
php限制ip地址范围的方法
Mar 31 PHP
php curl 模拟登录并获取数据实例详解
Dec 22 PHP
利用PHP判断是否是连乘数字串的方法示例
Jul 03 PHP
Laravel 5.5基于内置的Auth模块实现前后台登陆详解
Dec 21 PHP
Yii2 中实现单点登录的方法
Mar 09 PHP
php中如何执行linux命令详解
Nov 06 PHP
PHP+Ajax实现的检测用户名功能简单示例
Feb 12 PHP
YII中assets的使用示例
Jul 31 #PHP
基于PHP的简单采集数据入库程序【续篇】
Jul 30 #PHP
基于PHP的简单采集数据入库程序
Jul 30 #PHP
PHP中设置一个严格30分钟过期Session面试题的4种答案
Jul 30 #PHP
PHP使用Session遇到的一个Permission denied Notice解决办法
Jul 30 #PHP
PHP伪静态Rewrite设置之APACHE篇
Jul 30 #PHP
PHP return语句的另一个作用
Jul 30 #PHP
You might like
一个简洁的多级别论坛
2006/10/09 PHP
比较时间段一与时间段二是否有交集的php函数
2011/05/31 PHP
php array_intersect比array_diff快(附详细的使用说明)
2011/07/03 PHP
PHP PDOStatement对象bindpram()、bindvalue()和bindcolumn之间的区别
2014/11/20 PHP
ThinkPHP中使用ajax接收json数据的方法
2014/12/18 PHP
JS判断是否为数字,是否为整数,是否为浮点数的代码
2010/04/24 Javascript
js 有框架页面跳转(target)三种情况下的应用
2013/04/09 Javascript
js如何获取兄弟、父类等节点
2014/01/06 Javascript
javascript中的正则表达式使用指南
2015/03/01 Javascript
基于jquery插件编写countdown计时器
2016/06/12 Javascript
chrome下判断点击input上标签还是其余标签的实现方法
2016/09/18 Javascript
Angular将填入表单的数据渲染到表格的方法
2017/09/22 Javascript
vue mintui-Loadmore结合实现下拉刷新和上拉加载示例
2017/10/12 Javascript
vue通过点击事件读取音频文件的方法
2018/05/30 Javascript
微信小程序开发之路由切换页面重定向问题
2018/09/18 Javascript
JavaScript接口实现方法实例分析
2020/05/16 Javascript
使用纯前端JavaScript实现Excel导入导出方法过程详解
2020/08/07 Javascript
[02:41]《西雅图我们来了》2015国际邀请赛出征全记录
2015/07/23 DOTA
python 解析html之BeautifulSoup
2009/07/07 Python
python根据给定文件返回文件名和扩展名的方法
2015/03/27 Python
深入理解python try异常处理机制
2016/06/01 Python
python实现unicode转中文及转换默认编码的方法
2017/04/29 Python
Python自然语言处理 NLTK 库用法入门教程【经典】
2018/06/26 Python
Python设计模式之迭代器模式原理与用法实例分析
2019/01/10 Python
python调用c++ ctype list传数组或者返回数组的方法
2019/02/13 Python
anaconda如何查看并管理python环境
2019/07/05 Python
python绘图模块matplotlib示例详解
2019/07/26 Python
Python进程间通信 multiProcessing Queue队列实现详解
2019/09/23 Python
Python中使用Selenium环境安装的方法步骤
2021/02/22 Python
基于ccs3的timeline时间线实现方法
2020/04/30 HTML / CSS
PHP面试题附答案
2015/11/28 面试题
能否解释一下XSS cookie盗窃是什么意思
2012/06/02 面试题
Linux的文件类型
2012/03/07 面试题
实习协议书范本
2014/04/22 职场文书
国庆阅兵观后感
2015/06/15 职场文书
mapstruct的用法之qualifiedByName示例详解
2022/04/06 Java/Android