2007-12-02 21:58:00 yongfa365 阅读数 8215
  • Thinkphp3.2.3+Bootstrap初级入门到商城实战

    本套thinkphp采用的版本是3.2.3,完全从初级开始,搭载bootstrap+jquery,实现商城的开发. 商城具备的功能:分类管理,商品管理(支持多图上传,前台有图片放大镜),购物车,下订单(ajax三级联动地址管理),注册,登录等等

    11421 人正在学习 去看看 吴华

二级联动 三级联动 多级联动 无限级联动下拉列表或菜单专题

三维数组数据源
  A     B     C  
--------------------------------------------------------------------------------------------------
AA BB CC  
--------------------------------------------------------------------------------------------------
二维数组数据源
A1 B1

专题名称:一个网页内多个数组数据源(二维或三维数组)无刷新实现多个二级联动或多级联动下拉列表

关键词组:二级联动,三级联动,多级联动,无限级联动

推荐阅读顺序:先看实例,如果有不明白的地方再看理论知识

理论知识:

二级联动多级联动的理论知识:

二级联动,简单的说就是,当下拉列表A1的的值改变时,下一级下拉列表B1也跟着动,但是下拉列表B1的值是与下拉列表A1的值相对应的。比如:A1选中“技术部”的话,B1的所有下拉项都显示的是与A1相对应的技术部成员,这个过程因为都是在客户端执行的不会在服务器端操作所以是无刷新实现的。

三级联动多级联动,就是利用二级联动的思想,第一级改变时,第二级跟着变,第三级跟着第二级变,第四级跟着第三级变。。。。

二级联动,三级联动,多级联动实践:

二级联动,当第一级选中一个改变选项,激发联动函数,这个函数用以改变第二个下拉列表的值,实现过程是,根据第一级传过来的值遍历数组,找到与第一级相对应的选项,然后加到第二级列表上。

三级联动多级联动,第一级改变时,第二级跟着变,第二级改变时,第三级跟着变。。。

此专题源与:二级联动下拉列表的实现是通过一个函数来实现的,如果在实现三级联动下拉列表或多级联动下拉列表的话,我们是直接复制二级联动下拉列表的函数,改一下函数名及相关参数,这样是可以解决问题的,但咱们是做程序的,应该让自己的程序更通用话,尽量适应各种情况,如果这样一来,平白的又添加了一个函数,并且如果是多级的话您就得重写这个函数多次,然而,您也许会想到,多级联动下拉列表与二级其实思想是一样的,那么我们为什么不能用一个函数来实现呢,并且一定是可以实现的,你相信能实现,我也想信能实现,事实是它就能实现,但这样实现的人很少,为什么呢,一般都觉得没这个必要,但每次遇到这样的问题时还是得研究半天,今天我要给大家介绍的是,一个函数来实现多级联动,使用的是类似与递归的思想,每一级onchange()时都会调用一个函数,这个函数会改变下一级的值并激发其onchange(),这时下一级的onchange里如果还是调用这个函数的话,那么这个函数还会再次运行,直到最后一级,因为最后一级onchange=""所以他不会再激发下一级,完成所有联动。

多级联动函数介绍:

  1. /*=========================================================================  
  2.  * Intro       可接收返回值的多级联动下拉列表函数  
  3.  * FileName    ChangeSelect.js  
  4.  * Author      yongfa365  
  5.  * Version     v1.0  
  6.  * WEB         http://www.yongfa365.com  
  7.  * Email       yongfa365[at]qq.com  
  8.  * MadeTime    2007-11-13 17:09:46  
  9.  * LastModify  2007-11-13 17:09:46  
  10.  *==========================================================================*/  
  11.   
  12.   
  13. /*  
  14. 数组数据源可以接受两种:  
  15. 1.["CategoryName","ParentCategoryName"]  即:["当前名称","父级名称"]  
  16. 2.['CategoryName','ParentId','NowId']    即:["当前名称","父级ID","当前ID"]  
  17. 上面说的父级,如果本身就是最上一级,那么父级就写成0或"0"  
  18. 调用方法:  
  19. 网页各级联(联动)下拉列表必须含有两个属性:id,onchange.  
  20. 最后一个下拉列表onchange=""(空,但必须写上)。  
  21. 函数调用方法:ChangeSelect(上一级的值,下一级Select控件的ID值,下一级Select控件要选中的值(即value而非text),数据源数组名),  
  22. 举例:  
  23. 第一级<select id="province"  onchange="ChangeSelect(this.value,'city','',ArrCity3)" ></select>  
  24. 第二级<select id="city" onchange="ChangeSelect(this.value,'area','',ArrCity3)" ></select>  
  25. 第三级<select id="area" onchange="" ></select>  
  26. 设置网页加载完后运行一次,可以设置默认值,默认状态下第一个参数是0  
  27. <SCRIPT language=JavaScript>ChangeSelect('0','province','110000',ArrCity3) </SCRIPT>  
  28.  
  29.  
  30. */  
  31. function ChangeSelect(ParentValue, NextId, NextSelectedValue, ArrObj)   
  32. {   
  33.     StrObj = eval(document.getElementById(NextId));   
  34.     StrObj.length = 0;   
  35.     //判断它是二级数据源,还是三级   
  36.     if (ArrObj.length > 0)   
  37.     {   
  38.         if (ArrObj[0].length == 2)   
  39.         {ArrNum = 0;}   
  40.         else  
  41.         {ArrNum = 2;}   
  42.     }   
  43.     //显示所有列表   
  44.     for (i = 0; i < ArrObj.length; i++)   
  45.     {   
  46.         if (i == 0)   
  47.         {   
  48.             StrObj.options[StrObj.length] = new Option("- 请选择 -""");   
  49.         }   
  50.         if (ArrObj[i][1] == ParentValue)   
  51.         {   
  52.             StrObj.options[StrObj.length] = new Option(ArrObj[i][0],ArrObj[i][ArrNum]);   
  53.         }   
  54.     }   
  55.     //选中列表内某一项   
  56.     for (i = 0; i < StrObj.length; i++)   
  57.     {   
  58.         if (StrObj.options[i].value == NextSelectedValue)   
  59.         {   
  60.             StrObj.options[i].selected = true;   
  61.         }   
  62.     }   
  63.     //激发下一级的onchange事件以实现多级级联   
  64.     StrObj.onchange();   
  65. }  

以下代码为一个浓缩版多级联动演示:


可修改代码后再运行

 

 备注:此文最上面的几个联动相关代码下载下去也许不能使用,因为本页是utf-8格式的,为了能让上面的联动运行正常,所以相关JS文件都改成了utf-8 格式,如果您要使用的话可以将其转为gb2312格式来用,做此说明主要是上面的省市三级联动代码的JS数据库使用的是信息产业部最新发布的数据。比较有用且权威,原下载地址:最新省市县数据库 


引用本页地址:http://www.yongfa365.com/item/ErJiLianDongSanJiLianDongDuoJiLianDongWuXianJiLianDongXiaLaLieBiaoHuoCaiDanZhuanTi.html
 
 
2014-05-30 17:17:19 yuanyuan_186 阅读数 1877
  • Thinkphp3.2.3+Bootstrap初级入门到商城实战

    本套thinkphp采用的版本是3.2.3,完全从初级开始,搭载bootstrap+jquery,实现商城的开发. 商城具备的功能:分类管理,商品管理(支持多图上传,前台有图片放大镜),购物车,下订单(ajax三级联动地址管理),注册,登录等等

    11421 人正在学习 去看看 吴华


Android开发实现二级联动下拉列表


http://android.tgbus.com/Android/tutorial/201107/361334.shtml

  • 2011年7月28日10:52
  • 来源:Android中文网
  • 我有话说(0人参与)

  代码如下:

  Java code:

  package zye.client.Client;

  import android.app.Activity;
  import android.content.Context;
  import android.os.Bundle;
  import android.view.View;
  import android.widget.AdapterView;
  import android.widget.ArrayAdapter; import android.widget.Spinner;
  import android.widget.AdapterView.OnItemSelectedListener;

  public class cityset extends Activity{
      private String[] province = new String[] {"直辖市", "特别行政区","黑龙江"};
      private String[] city = new String[]{"北京","上海","天津","重庆"};
      private String[][] pandc = new String[][]{{"北京","上海","天津","重庆"},{"香港","澳

  门"},{"哈尔滨","齐齐哈尔","牡丹江","大庆","伊春","双鸭山","鹤岗","鸡西","佳木斯","七台河","黑河","绥化","大兴安岭"}};
      private Spinner sp;
      private Spinner sp2;
      private Context context;

      ArrayAdapter<String> adapter ;

      ArrayAdapter<String> adapter2;
   
       public void onCreate(Bundle savedInstanceState) {
           super.onCreate(savedInstanceState);
           setContentView(R.layout.cityset);

  context = this;
        
              adapter = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item, province);
              adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
              sp = (Spinner) findViewById(R.id.province);
              sp.setAdapter(adapter);
              sp.setOnItemSelectedListener(selectListener);
            
              adapter2 = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item, city);
            adapter2.setDropDownViewResource

  (android.R.layout.simple_spinner_dropdown_item);
              sp2 = (Spinner) findViewById(R.id.city);
              sp2.setAdapter(adapter2);
           
      }
    
       private OnItemSelectedListener selectListener = new OnItemSelectedListener(){
           public void onItemSelected(AdapterView parent, View v, int position,long id){
               int pos = sp.getSelectedItemPosition();
               adapter2 = new ArrayAdapter<String>

  (context,android.R.layout.simple_spinner_item, pandc[pos]);
               sp2.setAdapter(adapter2);
           }
      
           public void onNothingSelected(AdapterView arg0){

         }

     };

}

  xml code:

  <?xml version="1.0" encoding="utf-8"?>
  <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
      android:layout_width="fill_parent"
      android:layout_height="fill_parent"
      android:background="#FFFFFF"
      >
      <Spinner android:id="@+id/province"
          android:layout_width="fill_parent"
            android:layout_height="45px"
            android:layout_marginLeft="75px"
            android:layout_marginRight="20px"
          android:layout_marginTop="7px"
           android:drawSelectorOnTop="true"
           android:layout_alignParentRight="true"
      />
         <Spinner android:id="@+id/city"
          android:layout_width="fill_parent"
            android:layout_height="45px"
            android:layout_marginLeft="75px"
            android:layout_marginRight="20px"
          android:layout_marginTop="3px"
           android:drawSelectorOnTop="true"
           android:layout_alignParentRight="true"
           android:layout_below="@id/province"
          />
     
  </RelativeLayout>

2011-07-27 16:50:00 weixin_33739627 阅读数 26
  • Thinkphp3.2.3+Bootstrap初级入门到商城实战

    本套thinkphp采用的版本是3.2.3,完全从初级开始,搭载bootstrap+jquery,实现商城的开发. 商城具备的功能:分类管理,商品管理(支持多图上传,前台有图片放大镜),购物车,下订单(ajax三级联动地址管理),注册,登录等等

    11421 人正在学习 去看看 吴华

本文来自:安卓航班网

实现一个二级联动的下拉列表,就是选定省份后,城市的下拉列表出现相应变化

Java code:

package zye.client.Client;

import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter; import android.widget.Spinner;
import android.widget.AdapterView.OnItemSelectedListener;

public class cityset extends Activity{
    private String[] province = new String[] {"直辖市", "特别行政区","黑龙江"};
    private String[] city = new String[]{"北京","上海","天津","重庆"};
    private String[][] pandc = new String[][]{{"北京","上海","天津","重庆"},{"香港","澳门"},{"哈尔滨","齐齐哈尔","牡丹江","大庆","伊春","双鸭山","鹤岗","鸡西","佳木斯","七台河","黑河","绥化","大兴安岭"}};
    private Spinner sp;
    private Spinner sp2;
    private Context context;

    ArrayAdapter<String> adapter ;

    ArrayAdapter<String> adapter2;
   
     public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.cityset);
         
         context = this;
         
            adapter = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item, province);
            adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
            sp = (Spinner) findViewById(R.id.province);
            sp.setAdapter(adapter);
            sp.setOnItemSelectedListener(selectListener);
            
            
            adapter2 = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item, city);
            adapter2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
            sp2 = (Spinner) findViewById(R.id.city);
            sp2.setAdapter(adapter2);
            
    }
     
     private OnItemSelectedListener selectListener = new OnItemSelectedListener(){
         public void onItemSelected(AdapterView parent, View v, int position,long id){
             int pos = sp.getSelectedItemPosition();
             adapter2 = new ArrayAdapter<String>(context,android.R.layout.simple_spinner_item, pandc[pos]);
             sp2.setAdapter(adapter2);
         }
      
         public void onNothingSelected(AdapterView arg0){

         }

     };

}


xml code:


<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="#FFFFFF"
    >
    <Spinner android:id="@+id/province"
        android:layout_width="fill_parent"
          android:layout_height="45px"
          android:layout_marginLeft="75px"
          android:layout_marginRight="20px"
        android:layout_marginTop="7px"
         android:drawSelectorOnTop="true"
         android:layout_alignParentRight="true"
    />
       <Spinner android:id="@+id/city"
        android:layout_width="fill_parent"
          android:layout_height="45px"
          android:layout_marginLeft="75px"
          android:layout_marginRight="20px"
        android:layout_marginTop="3px"
         android:drawSelectorOnTop="true"
         android:layout_alignParentRight="true"
         android:layout_below="@id/province"
         />
      
</RelativeLayout>

原文地址:http://www.apkway.com/forum.php?mod=viewthread&tid=2178&extra=page%3D2

转载于:https://www.cnblogs.com/yyq-quan/archive/2011/07/27/2118599.html

2011-11-04 17:15:59 nei504293736 阅读数 4377
  • Thinkphp3.2.3+Bootstrap初级入门到商城实战

    本套thinkphp采用的版本是3.2.3,完全从初级开始,搭载bootstrap+jquery,实现商城的开发. 商城具备的功能:分类管理,商品管理(支持多图上传,前台有图片放大镜),购物车,下订单(ajax三级联动地址管理),注册,登录等等

    11421 人正在学习 去看看 吴华

实现一个二级联动的下拉列表,就是选定省份后,城市的下拉列表出现相应变化

mport android.app.Activity;

import android.content.Context;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter; import android.widget.Spinner;
import android.widget.AdapterView.OnItemSelectedListener;

public class cityset extends Activity{
    private String[] province = new String[] {"直辖市", "特别行政区","黑龙江"};
    private String[] city = new String[]{"北京","上海","天津","重庆"};
    private String[][] pandc = new String[][]{{"北京","上海","天津","重庆"},{"香港","澳门"},{"哈尔滨","齐齐哈尔","牡丹江","大庆","伊春","双鸭山","鹤岗","鸡西","佳木斯","七台河","黑河","绥化","大兴安岭"}};
    private Spinner sp;
    private Spinner sp2;
    private Context context;

    ArrayAdapter<String> adapter ;

    ArrayAdapter<String> adapter2;
   
     public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.cityset);
         
         context = this;
         
            adapter = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item, province);
            adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
            sp = (Spinner) findViewById(R.id.province);
            sp.setAdapter(adapter);
            sp.setOnItemSelectedListener(selectListener);
            
            
            adapter2 = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item, city);
            adapter2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
            sp2 = (Spinner) findViewById(R.id.city);
            sp2.setAdapter(adapter2);
            
    }
     
     private OnItemSelectedListener selectListener = new OnItemSelectedListener(){
         public void onItemSelected(AdapterView parent, View v, int position,long id){
             int pos = sp.getSelectedItemPosition();
             adapter2 = new ArrayAdapter<String>(context,android.R.layout.simple_spinner_item, pandc[pos]);
             sp2.setAdapter(adapter2);
         }
      
         public void onNothingSelected(AdapterView arg0){

         }

     };

}
2014-02-20 12:25:04 u012394290 阅读数 2196
  • Thinkphp3.2.3+Bootstrap初级入门到商城实战

    本套thinkphp采用的版本是3.2.3,完全从初级开始,搭载bootstrap+jquery,实现商城的开发. 商城具备的功能:分类管理,商品管理(支持多图上传,前台有图片放大镜),购物车,下订单(ajax三级联动地址管理),注册,登录等等

    11421 人正在学习 去看看 吴华

首先从服务器端,绑定下拉列表,二级下拉的text命名按照一定规则加上一级下拉的ID。


var options=new Array();
    $(document).ready(function(){
        //二级联动
        $('#ddlPages').children('option').each(function(i){
            options[i]='<option value="'+$(this).val()+'">'+$(this).text()+'</option>';
        });//将option列表放到数组里
        $('#ddlPages option:gt(0)').remove();    //清楚下拉
        $('#ddlSubsystems').bind('change',function(){        //注册事件
            var systemname=$('#ddlSubsystems option:selected').text();
            for(var j=0;j<options.length;j++){
                $('#ddlPages').append(options[j]);
            }    //option列表先初始化
            $('#ddlPages option:gt(0)').each(function(i){    //遍历排除
                var textname=$(this).text();
                var index=textname.indexOf('-'+systemname);
                if(index<0){
                    $(this).remove();
                }else{
                    $(this).text(textname.substring(0,index));
                }
            });
            $('#ddlPages').val(0);                            //默认选中第一行
        });
    });


实现二级联动菜单

阅读数 106

没有更多推荐了,返回首页