下拉框_下拉框只读 - CSDN
  • ——下拉框功能——

    2017-09-01 11:08:22
    这是我看到的很好很实用的下拉框的教程,分享一下。 http://www.oschina.net/question/54100_33274 下拉列表 Spinner。  Spinner的使用,可以极大提高用户的体验性。当需要用户选择的时候,可以提供一个下拉列表将...

    这是我看到的很好很实用的下拉框的教程,分享一下。   http://www.oschina.net/question/54100_33274

    下拉列表 Spinner。 

    Spinner的使用,可以极大提高用户的体验性。当需要用户选择的时候,可以提供一个下拉列表将所有可选的项列出来。供用户选择。 

    Demo如下,可以留作参考 

    一、使用数组作为数据源
     

    1.新建一个android的工程 
    2.工程的layout.xml文件如下:声明一个TextView控件和一个Spinner控件

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout
      xmlns:android="http://schemas.android.com/apk/res/android"
      android:layout_width="fill_parent"
      android:layout_height="fill_parent"
      android:orientation="vertical"
      >
      <TextView android:id="@+id/spinnerText"
      			android:layout_width="fill_parent" 
      			android:layout_height="wrap_content"></TextView>
      <Spinner android:id="@+id/Spinner01" 
               android:layout_width="fill_parent"
               android:layout_height="wrap_content"></Spinner>
    </LinearLayout>

    3.java代码
    import android.app.Activity;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.AdapterView;
    import android.widget.AdapterView.OnItemSelectedListener;
    import android.widget.ArrayAdapter;
    import android.widget.Spinner;
    import android.widget.TextView;
    
    public class SpinnerActivity extends Activity {
    	
    	private static final String[] m={"A型","B型","O型","AB型","其他"};
    	private TextView view ;
    	private Spinner spinner;
    	private ArrayAdapter<String> adapter;
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		// TODO Auto-generated method stub
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.spinner);
    		
    		view = (TextView) findViewById(R.id.spinnerText);
    		spinner = (Spinner) findViewById(R.id.Spinner01);
    		//将可选内容与ArrayAdapter连接起来
    		adapter = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item,m);
    		
    		//设置下拉列表的风格
    		adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    		
    		//将adapter 添加到spinner中
    		spinner.setAdapter(adapter);
    		
    		//添加事件Spinner事件监听  
    		spinner.setOnItemSelectedListener(new SpinnerSelectedListener());
    		
    		//设置默认值
    		spinner.setVisibility(View.VISIBLE);
    		
    	}
    	
    	//使用数组形式操作
    	class SpinnerSelectedListener implements OnItemSelectedListener{
    
    		public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2,
    				long arg3) {
    			view.setText("你的血型是:"+m[arg2]);
    		}
    
    		public void onNothingSelected(AdapterView<?> arg0) {
    		}
    	}
    }

    4、运行效果如下: 

     

      

    二、使用XML作为数据源 
    1.新建一个android的工程 
    2.在values文件夹下新建一个arryas.xml文件:声明一个TextView控件和一个Spinner控件,代码如下:
    <?xml version="1.0" encoding="utf-8"?>
    <resources>
    	<string-array name="plantes">
    		<item>NOKIA</item>
    		<item>MOTO</item>
    		<item>HTC</item>
    		<item>LG</item>
    		<item>其他</item>
    	</string-array>
    </resources>

    3.java代码
    import android.app.Activity;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.AdapterView;
    import android.widget.AdapterView.OnItemSelectedListener;
    import android.widget.ArrayAdapter;
    import android.widget.Spinner;
    import android.widget.TextView;
    
    public class SpinnerActivity extends Activity {
    	
    	private TextView view2;
    	private Spinner spinner2;
    	private ArrayAdapter adapter2;
    
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		// TODO Auto-generated method stub
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.spinner);
    
    		spinner2 = (Spinner) findViewById(R.id.spinner02);
    		view2 = (TextView) findViewById(R.id.spinnerText02);
    
    		//将可选内容与ArrayAdapter连接起来
    		adapter2 = ArrayAdapter.createFromResource(this, R.array.plantes, android.R.layout.simple_spinner_item);
    
    		//设置下拉列表的风格	
     adapter2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    
    		//将adapter2 添加到spinner中
    		spinner2.setAdapter(adapter2);
    
    		//添加事件Spinner事件监听  
    		spinner2.setOnItemSelectedListener(new SpinnerXMLSelectedListener());
    
    		//设置默认值
    		spinner2.setVisibility(View.VISIBLE);
    		
    	}
    	
    	//使用XML形式操作
    	class SpinnerXMLSelectedListener implements OnItemSelectedListener{
    		public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2,
    				long arg3) {
    			view2.setText("你使用什么样的手机:"+adapter2.getItem(arg2));
    		}
    
    		public void onNothingSelected(AdapterView<?> arg0) {
    			
    		}
    		
    	}
    }

    4、运行效果如下: 

     

     


    展开全文
  • input 做下拉框,可编辑下拉框

    万次阅读 2018-07-26 22:01:55
    如果是无需编辑的下拉框可用seclet标签实现 &lt;div&gt; &lt;label for="sex"&gt;性别:&lt;/label&gt; &lt;select id="sex" &gt; &lt;option&gt...

    如果是无需编辑的下拉框可用seclet标签实现

    <div>
                <label for="sex">性别:</label>
                <select id="sex" >
                    <option></option>
                    <option></option>
                </select>
            </div>

    如果需要能编辑里面的内容则使用input实现
    input有个属性,list,自定义list中的内容即可

            <div class="changeDiv">
                <a>性别:</a>
                <input id="sex" type="text" list="sexlist">
                <datalist id="sexlist">
                    <option></option>
                    <option></option>
                </datalist>
            </div>

    css代码

    div.changeDiv input {
        font-size: 1em;
        font-family: 仿宋, serif;
        width: 60%;
        display: block;
        margin-left: 10%;
        opacity: 0.8;
        padding: 0.2em;
        color: #000000;
        border-radius: 10px;
        background-color: #bed8df;
    }

    datalist标签里面写下拉的内容,此为一个选择性别的框,里面有男女两个选项

    datalist的id一定要和input 的list属性的值一致

    效果如下

    展开全文
  • select下拉框多选,超级好用!十分强大!

    万次阅读 多人点赞 2020-07-23 10:17:46
    正文: 先说点废话:一个需求,想把select变成下拉多选,网上查找了半天,给出的方案都是自定义一个标签,或者弄个什么ul下面li进行选择,看起来就繁琐,本人只想在select上面做文章,不得已,自己写了一个,只需要...

         

    正文:

            先说点废话:一个需求,想把select变成下拉多选,网上查找了半天,给出的方案都是自定义一个标签,或者弄个什么ul下面li进行选择,看起来就繁琐,本人只想在select上面做文章,不得已,自己写了一个,只需要在select上加个属性即可,方便实用!

           2019.11.30之前,算是selectMultip的第一个版本,没想到用的人还不少,自然也发现了很多隐藏的bug,虽然它比较简单但大家使用时还是有些困惑,基于以上等原因,selectMultip2.0问世(哈哈),2.0做了全面的升级,不仅解决了之前发现的bug,而且新增了api,使用方法还是原来的步骤:1、引入js文件,2、在select标签上添加属性multip,然后调用方法即可(只有两步哦!)

    可以先访问一下这里哟:演示地址 (不想访问也可以往下读)

    先上图:

    这个是选中后的效果,我们用的是select标签,选中后子标签会变成蓝色,如果想取消,再点击一下即可取消

    取值,调用selectMultip.getVal("22")方法即可:

    赋值,调用selectMultip.setVal(id,data)即可,第二个参数类型可以是字符串或者数组,如图:

    具体取值、赋值、动态加载等可以看下面的说明文档哦!

    那现在就开始使用吧(只需要两步):

    首先,将下面的js代码复制到一个js文件中(js文件名可以命名为selectMultip哦),并将其引入项目中即可。

    (function() {
    		selectMultip = {
    			register: function(id) {
    				//大致思路是:为下拉选创建一个隐藏的子选项,每次单选之后将单选的值追加到隐藏的子选项中,并将子选项选中显示即可
    				//全局查找所有标记multip的select
    				document.querySelectorAll("[multip]").forEach(function(e) {
    					render(e);
    				})
    			},
    			reload: function(id, data, setData) {
    				var htm = "";
    				for(var i = 0; i < data.length; i++) {
    					htm += '<option value="' + data[i].value + '">' + data[i].text + '</option>'
    				}
    				var e = document.getElementById(id);
    				e.innerHTML = htm;
    				render(e);
    				this.setVal(id, setData);
    			},
    			setVal: function(id, str) {
    				var type = Object.prototype.toString.call(str);
    				switch(type) {
    					case "[object String]":
    						document.getElementById(id).val = str;
    						break;
    					case "[object Array]":
    						document.getElementById(id).val = str.toString();
    						break;
    					default:
    						break;
    				}
    			},
    			getVal: function(id) {
    				return document.getElementById(id).val;
    			},
    
    		}
    
    		function render(e) {
    			e.param = {
    				arr: [],
    				valarr: [],
    				opts: []
    			};
    			var choosevalue = "",
    				op;
    
    			for(var i = 0; i < e.length; i++) {
    				op = e.item(i);
    				e.param.opts.push(op);
    				if(op.hasAttribute("choose")) {
    					if(choosevalue == "") {
    						choosevalue = op.value
    					} else {
    						choosevalue += "," + op.value;
    					}
    
    				}
    			}
    
    			//创建一个隐藏的option标签用来存储多选的值,其中的值为一个数组
    			var option = document.createElement("option");
    			option.hidden = true;
    			e.appendChild(option);
    			e.removeEventListener("input", selchange);
    			e.addEventListener("input", selchange);
    
    			//重新定义标签基础属性的get和set方法,实现取值和赋值的功能
    			Object.defineProperty(e, "val", {
    				get: function() {
    					return this.querySelector("[hidden]").value;
    				},
    				set: function(value) {
    					e.param.valarr = [];
    					var valrealarr = value == "" ? [] : value.split(",");
    					e.param.arr = [];
    					e.param.opts.filter(function(o) {
    						o.style = "";
    					});
    					if(valrealarr.toString()) {
    						for(var i = 0; i < valrealarr.length; i++) {
    							e.param.opts.filter(function(o) {
    								if(o.value == valrealarr[i]) {
    									o.style = "color: blue;";
    									e.param.arr.push(o.text);
    									e.param.valarr.push(o.value)
    								}
    							});
    						}
    						this.options[e.length - 1].text = e.param.arr.toString();
    						this.options[e.length - 1].value = e.param.valarr.toString();
    						this.options[e.length - 1].selected = true;
    					} else {
    						this.options[0].selected = true;
    					}
    
    				},
    				configurable: true
    			})
    			//添加属性choose 此属性添加到option中用来指定默认值
    			e.val = choosevalue;
    			//添加属性tip 此属性添加到select标签上
    			if(e.hasAttribute("tip") && !e.tiped) {
    				e.tiped = true;
    				e.insertAdjacentHTML('afterend', '<i style="color: red;font-size: 12px">*可多选</i>');
    			}
    		}
    
    		function selchange() {
    			var text = this.options[this.selectedIndex].text;
    			var value = this.options[this.selectedIndex].value;
    			this.options[this.selectedIndex].style = "color: blue;";
    			var ind = this.param.arr.indexOf(text);
    			if(ind > -1) {
    				this.param.arr.splice(ind, 1);
    				this.param.valarr.splice(ind, 1);
    				this.param.opts.filter(function(o) {
    					if(o.value == value) {
    						o.style = "";
    					}
    				});
    			} else {
    				this.param.arr.push(text);
    				this.param.valarr.push(value);
    			}
    			this.options[this.length - 1].text = this.param.arr.toString();
    			this.options[this.length - 1].value = this.param.valarr.toString();
    			if(this.param.arr.length > 0) {
    				this.options[this.length - 1].selected = true;
    			} else {
    				this.options[0].selected = true;
    			}
    		}
    	})();

    其次,在你的select上面加一个multip属性,如图:

    然后,就是代码的实现:

    调用一下这个selectMultip.register();方法即可。

    这个方法是对标有multip属性的select标签进行注册渲染,这样它就具备了多选的功能!

    完成!


    下面是使用的说明文档,总共四个方法!

    说明文档
    方法名 参数 说明
    selectMultip.register() 将全局下所有具有multip属性的select标签注册成为具有多选功能的下拉选。
    selectMultip.reload(id, data,setData)

    id:select标签上的id值

    data:渲染的数据

    格式如下:[{
            value: "",
            text: "---请选择---"
        }, {
            value: 1,
            text: "薯片"
        }, {
            value: 2,
            text: "大豆油"
        }, {
            value: 3,
            text: "花生"
        }]

    setData:设置默认值,可选。具体格式可参照selectMultip.selVal()方法的第二个参数

    重新渲染,使用于联动或者动态渲染select标签的场景,从后台服务器获得数据之后可调用此方法。

    selectMultip.setVal(id, data)

    id:select标签上的id值

    data: 可以为字符串,如:“1,2,3”或者“a,b,c”

     也可以为数组,如[1,2,3]或者["a","b","c"]

    给标签赋值
    selectMultip.getVal(id) id:select标签上的id值 取值

                


    关于动态渲染说明以及示例

    需要动态加载的select下拉选项我们往往异步请求后台拿到数据后,对下拉选进行拼接,这个繁琐的步骤已经在reload方法中做好了,我们只需要传递正确的数据就可以完成,下面举个例子,假设我们使用jquery的ajax获取后台数据:

    我们代码需要这么写:

    $.ajax({
        url: url,
        type: type ,
        data: param,
        success: function (res) {
            //data中如果是[{value: 1,text: "薯片"}]格式与字段直接传递,如果不是 特别注意  字段名要一致
           //假设我们拿到是数据是[{id: 1,name: "薯片"}]
    
             var data = []
             for(var i = 0;i < res.list.length;i++){
                var obj ={};
                obj.value=res.list[i].id;
                 obj.text=res.list[i].name;
                data.push(obj);
             }
    
             selectMultip.reload(id, data,setData);
    
        },
       
    })

     


    标签属性说明:

    multip:select标签上的属性,用来标识此标签为下拉多选

    tip:select标签上的属性,用来提示用户为多选框如图:

    choose:设置默认选中项,在option标签上添加此属性即可。注意:此属性可能在ie8以下版本不支持(没有亲自测试)


    2019.11.30更新日志:对版本进行全面升级,并且增加动态数据渲染功能,取值/赋值/设置默认值 将更加简单方便,适用于联动等场景,并且修复隐藏bug,代码更加健壮。可以将此称之为selectMultip小框架。

    2019.11.24更新日志:解决取值个数不符问题(对之前使用的小伙伴说声抱歉,在用户多次选择取消之后会出现取值不正确的问题,感谢丶奈何亦是泪提出疑问,本人在仔细测试后才发现确实有此bug,第一时间做了更新,文本中的代码是最新代码,大家可以放心使用)

    2019.11.15更新日志:添加属性choose(默认选中),并添加注释方便使用者二次开发。

    如果还有其他需求等,可以留言,好做更新升级哦!其他不足之处,请多指教!

    展开全文
  • 自己写的下拉框

    2019-06-10 22:39:00
    .fa-remove:before, .fa-close:before, .fa-times:before { content: "×" } .fa-angle-down:before { content: ""; } .fa-check:before{ content: "√"; } .fa-angle-up:before { ... content: ""...
    .fa-remove:before, .fa-close:before, .fa-times:before {
    
        content: "×"
    }
    
    .fa-angle-down:before {
    
        content: "";
    }
    
    .fa-check:before{
    
        content: "√";
    }
    
    .fa-angle-up:before {
    
        content: "";
    }
    ::-webkit-scrollbar{
    
        width: 9px;
        height: 9px;
    }
    
    ::-webkit-scrollbar-track-piece{
    
        background-color: #ebebeb;
        -webkit-border-radius: 4px;
    }
    ::-webkit-scrollbar-thumb:vertical{
    
        height: 32px;
        background-color: #ccc;
        -webkit-border-radius: 4px;
    }
    ::-webkit-scrollbar-thumb:horizontal{
    
        width: 32px;
        background-color: #ccc;
        -webkit-border-radius: 4px;
    }
    
    ul,li{padding: 0;margin: 0}
    .mySelect{
    
        position: relative;
    }
    .mySelect .inputWrap{
    
        width:100%;
        min-height: 40px;
        border: 1px solid #ccc;
        border-radius: 3px;
        position: relative;
        cursor: pointer;
    }
    .mySelect ul{
    
        padding:0 5px ;
        margin: 0;
        padding-right: 35px;
    }
    
    .mySelect ul,li{
    
        list-style: none;
    }
    
    .mySelect li{
    
        display: inline-block;
        background: #eaeaea;
        padding: 5px;
        margin: 5px 5px 5px 0;
        border-radius: 5px;
    }
    
    .mySelect .fa-close{
    
        cursor: pointer;
    }
    
    .mySelect .fa-close{
    
        cursor: pointer;
    }
    
    .mySelect .fa-close:hover{
    
        color: #237eff;
    }
    
    .mySelect .mySelect-option{
    
        width: 100%;
        border: 1px solid #ccc;
        max-height: 200px;
        overflow-y: scroll;
        position: absolute;
        height: 0;
        opacity: 0;
    }
    
    .mySelect .mySelect-option div{
    
        padding: 10px;
    }
    
    .mySelect .inputWrap>i{
    
        position: absolute;
        padding: 13px;
        right: 0;
        top: 0;
    }
    
    .mySelect-option div{
    
        cursor: pointer;
        border-bottom: 1px solid #e7e7e7;
        margin: 5px;
    }
    .mySelect-option div i{
    
        float: right;
        color: #ffffff;
    }
    .mySelect-option div.selected{
    
        background: #237eff;
        color: #ffffff;
        border-radius: 5px;
    }
    .mySelect-option div:hover{
    
        color: #9ec6ff;
        border-bottom: 1px solid #9ec6ff;
    }
    .mySelect-option{
    
        height: 400px;
        opacity: 1;
        background: #fff;
        z-index: 99;
    }
    #box_1Img{
    
        width: 50px;
        height: 43px;
    }
    
    
        <div id="mySelect" class="mySelect" ></div>
        要引入一个js(select.js)
         var postData=[]; //发给后台
        //回显
        var showLook=[];
         // 下拉框
                     var data=res.rows;
                     var mySelect= $("#mySelect").mySelect({
                        mult:true,//true为多选,false为单选
                        option:data,
                        onChange:function(res){//选择框值变化返回结果
                            postData=res;
                        }
                    });
                    // mySelect.setResult([2,3]);传入格式
                    mySelect.setResult(showLook);
    复制代码
    展开全文
  • 下拉框

    千次阅读 2019-06-18 08:11:59
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 开发工具与关键技术:DW CSS和JS 作者:袁志彤 撰写时间:2019-06-07 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~...
  • 下拉框实现

    2019-03-29 16:51:52
    使用Jquery快速实现下拉显示上升隐藏 开发工具与关键技术:DW 作者:熊琪 撰写时间:2019.02.01 jQuery是一个JavaScript函数库,是目前流行的 JS 框架。 JQuery官方的主旨是:write less, do more(以更少的代码,...
  • 复选下拉框组件

    千次阅读 2018-12-11 22:00:40
    做报表的时候,筛选条件中需要用到复选下拉框,首先说明: 复选框(复选框)无法满足我的需求,因为可选项有上百个,不可能都直接列在页面上 下拉框(选择)也无法满足,因为不支持复选 在网上找了很久,找到一个...
  • 下拉框的改变事件

    千次阅读 2019-04-18 09:02:52
    下拉框的改变事件 开发工具与关键技术:VS、下拉框的改变事件 作者:黄桂康 撰写时间:2019.04.15 change事件 (父与子的关系) change事件就是在当元素的值发生改变时,就会触发change事件。 是由两个下拉框形成的...
  • HTML中下拉框的简单介绍<Select><option>

    万次阅读 2015-10-23 23:12:59
    下拉框在生活中应用很广
  • multipe 列表框和下拉框是否允许多选 ,支持boolean值属性,为true时则为列表框 size 列表框可同时显示多少个列表项 select 能包含的子元素 option 属性 disabled 禁用 selected 初始状态是否被选中 optgroup 单项...
  • 下拉框的选择查询

    千次阅读 2019-04-25 21:56:30
    下拉框的选择查询是查询的一部分,看过我文章的人知道我写过关于查询的例子也将下拉框拉过了一下下,今天我要在这详细的说一下下拉框的查询。下拉框查询是我们经常用到的一种功能,它可快速筛选出我们需要的数据,哪...
  • android中自定义下拉框

    万次阅读 热门讨论 2013-07-09 12:09:08
    我觉得有时候好用,有时候难有,项目规定这样的效果,自带的控件实现不了,那么只有我们自己来老老实实滴写一个新的了,其实最基本的下拉框就像一些资料填写时,点击的时候出现在编辑框的下面,然后又很多选项的...
  • 可以输入的下拉框. 下拉框和文本框组合共用可以输入的下拉框. 下拉框和文本框组合共用可以输入的下拉框. 下拉框和文本框组合共用可以输入的下拉框. 下拉框和文本框组合共用可以输入的下拉框. 下拉框和文本框组合共用...
  • Layui:设置select下拉框自动选中某项

    万次阅读 热门讨论 2018-12-28 11:43:51
    用户需要更改某一项活动的信息,活动信息中包含需要用下拉框选择的字段A。在用户点击进行修改弹出对话框的瞬间需要填补已有的活动信息,自动选择字段A已经存在的值。 2. Layui的select下拉框是怎么实现的 为了获得...
  • 一、前言 在编写网页的时候,有时候需要用到...定义两个select选择框,在js脚本中设置第一个下拉框的onchange函数,点击时删除第二个下拉框原有的内容并添加新的内容。 三、HTML+JS源代码 <!DOCTYPE html> <...
  • layui 如何取得select下拉框选中的值

    万次阅读 热门讨论 2020-06-17 16:45:34
    引用layui插件,取得下拉框的值模板:&lt;!DOCTYPE html&gt; &lt;html&gt; &lt;head&gt; &lt;meta charset="utf-8"&gt; &lt;meta name="viewport" ...
  • Axure实现下拉框联动效果

    万次阅读 2018-09-27 13:51:28
    Axure实现下拉框联动效果 下拉列表框级联效果会用到很多的地方,因为第一个下拉框的选择,影响到后面下拉框里的数据显示。那么如何做到这样的效果,作为一个初学者,分享一下我的小经验。 下面已最常见的地址的选择...
  • 动态联动select下拉框实现

    万次阅读 2017-05-22 17:57:52
    我们在做下拉框选择时,常常会遇到一种场景,就是需要两个下拉框,其中一个下拉框的选项和内容需要根据第一个的下拉框的选择动态变化。比如我有大的分类:有氧运动 无氧运动选择有氧运动时,选项有:跑步,游泳选择无...
  • 本文主要介绍select下拉框的相关方法。1.通过id获取下拉框的value和文本值例如: &lt;select class="form-control" id="numbers"&gt; &lt;option value="1"&gt;数字...
  • thymeleaf的下拉框(select option)回显选中

    万次阅读 多人点赞 2018-05-20 10:54:14
    thymeleaf的下拉框(select option)回显选中 在开发一个足球联赛管理系统中,需要在修改页面使用thymeleaf模板引擎先从数据库中取出数据显示在页面中,然后再对要修改的数据分别进行修改。 在input或者textarea的...
1 2 3 4 5 ... 20
收藏数 125,386
精华内容 50,154
关键字:

下拉框