当前位置: 首页 > news >正文

JS 简单的2级下拉框

JS 简单的2级下拉框

以前都是用的服务器端的控件,绑定数据很随意,级联也很随意,现在要考虑用客户端控件,突然有点蛋疼,以前没怎么写过,今天认真写一个

在网上找得例子,再完善一下:嘻嘻

<script type="text/javascript">
    var cityArr=[];
    cityArr['Shanghai']=[
        {txt:'zhabei',val:'zhabei'},
        {txt:'huangpu',val:'huangpu'},
        {txt:'baoshan',val:'baoshan'},
        {txt:'xuhui',val:'xuhui'},
        {txt:'yangpu',val:'yangpu'},
        {txt:'hongkou',val:'hongkou'}
    ];
   
    cityArr['Jiangsu'] = [
             {txt:'nanjing', val:'nanjing'},         
             {txt:'wuxi', val:'wuxi'},        
             {txt:'xuzhou', val:'xuzhou'},        
             {txt:'suzhou', val:'suzhou'},        
             {txt:'nantong', val:'nantong'},        
             {txt:'huaiyin', val:'huaiyin'},        
             {txt:'yangzhou', val:'yangzhou'},        
             {txt:'zhenjiang', val:'zhenjiang'},        
             {txt:'changzhou', val:'changzhou'}    
    ];
   
    function setCity(province)
    {
        setSelectOption('city',cityArr[province],'-please select-');
    }
   
    function noneSelected(province)
    {
        removeOptionsExcept('city');
    }
    </script>

    <script type="text/javascript">
    function setSelectOption(selectObj,optionList,firstOption,selected)
    {
        if(typeof selectObj!='object')
        { selectObj=document.getElementById(selectObj) };
       
        //Empty the select
        removeOptions(selectObj);
       
        var start=0;
       
        if(firstOption)
        {
            selectObj.options[0]=new Option(firstOption,'');
            start ++;
        }
       
        var len=optionList.length;
       
        for(var i=0;i<len;i++)
        {
            selectObj.options[start]=new Option(optionList[i].txt,optionList[i].val);
           
            if(selected==optionList[i].val)
            {
                selectObj.options[start].selected=true;
            }
            start ++;
        }
    }
   
    function removeOptions(selectObj)
    {    
        if (typeof selectObj != 'object')    
        {         selectObj = document.getElementById(selectObj);     }
              // 原有选项计数    
        var len = selectObj.options.length;     
        for (var i=0; i < len; i++)    
        {        
            // 移除当前选项        
            selectObj.options[0] = null;    
        }
    }

    function removeOptionsExcept(selectObj)
    {
        if (typeof selectObj != 'object')    
        {         selectObj = document.getElementById(selectObj);     }
              // 原有选项计数    
        var len = selectObj.options.length;     
        for (var i=0; i < len; i++)    
        {        
            // 移除当前选项        
            selectObj.options[0] = null;    
        }
       
        selectObj.options[0]=new Option('-please select-','');

    }
    </script>

 

 

<form id="form1" runat="server">
    <div>
    <select id="province" οnclick="if(this.value != ''){ setCity(this.options[this.selectedIndex].value);}else{noneSelected(city)}">
    <option value="">-please select-</option>
    <option value="Jiangsu">Jiangsu</option>
    <option value="Shanghai">Shanghai</option>
    </select>
   
    <select id="city">
    <option value="">-please select-</option>
    </select>
    </div>
    </form>

 

很简单 3级4级一样搞

posted on 2010-12-03 17:01 吃螺丝 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/Kiros/archive/2010/12/03/1895660.html

相关文章:

  • 使用Windows 7中的库
  • 嘉猪妈妈写的日记(一)
  • QT C++ 学习
  • 理解相机的相关参数的设置
  • 带参数的main函数
  • 基本文章
  • 使用sharppcap抓数据包
  • SOA
  • Mac OS 10.6.5上如何默认启动mysq服务
  • fedora linux 下安装pwntcha[验证码开源]
  • 初识 统一建模语言(UML)
  • OllyDBG 1.10汉化第二版
  • Eclipse Android配置
  • asp.net与Discuz-UCenter整合(3):UCenter与应用同步
  • css中的相对定位和绝对定位
  • “大数据应用场景”之隔壁老王(连载四)
  • 5分钟即可掌握的前端高效利器:JavaScript 策略模式
  • CSS进阶篇--用CSS开启硬件加速来提高网站性能
  • DataBase in Android
  • dva中组件的懒加载
  • express + mock 让前后台并行开发
  • JavaScript 是如何工作的:WebRTC 和对等网络的机制!
  • jquery ajax学习笔记
  • maya建模与骨骼动画快速实现人工鱼
  • MySQL QA
  • SegmentFault 社区上线小程序开发频道,助力小程序开发者生态
  • ViewService——一种保证客户端与服务端同步的方法
  • vue从创建到完整的饿了么(11)组件的使用(svg图标及watch的简单使用)
  • 从0实现一个tiny react(三)生命周期
  • 将回调地狱按在地上摩擦的Promise
  • 前端面试题总结
  • 如何将自己的网站分享到QQ空间,微信,微博等等
  • 原生Ajax
  • 中国人寿如何基于容器搭建金融PaaS云平台
  • 格斗健身潮牌24KiCK获近千万Pre-A轮融资,用户留存高达9个月 ...
  • 如何通过报表单元格右键控制报表跳转到不同链接地址 ...
  • ​iOS实时查看App运行日志
  • ​sqlite3 --- SQLite 数据库 DB-API 2.0 接口模块​
  • ​一些不规范的GTID使用场景
  • #中国IT界的第一本漂流日记 传递IT正能量# 【分享得“IT漂友”勋章】
  • (10)Linux冯诺依曼结构操作系统的再次理解
  • (2)STL算法之元素计数
  • (html5)在移动端input输入搜索项后 输入法下面为什么不想百度那样出现前往? 而我的出现的是换行...
  • (Redis使用系列) SpringBoot中Redis的RedisConfig 二
  • (附源码)springboot掌上博客系统 毕业设计063131
  • (一) springboot详细介绍
  • (幽默漫画)有个程序员老公,是怎样的体验?
  • (终章)[图像识别]13.OpenCV案例 自定义训练集分类器物体检测
  • (转)3D模板阴影原理
  • (转)大型网站架构演变和知识体系
  • (转)树状数组
  • .NET 6 在已知拓扑路径的情况下使用 Dijkstra,A*算法搜索最短路径
  • .NET C# 使用 SetWindowsHookEx 监听鼠标或键盘消息以及此方法的坑
  • .NET Core 实现 Redis 批量查询指定格式的Key
  • /dev下添加设备节点的方法步骤(通过device_create)