http://dl.dbank.com/c04csxtesr

基本用法

单选下拉框的写法与传统的一样。支持TAB键打开和上下箭头选择option。支持onchange事件,见下面
选中项:2
代码如下:

<select  onchange='selFunc()' id="sel"><option value="">请选择功能</option><option value="1">新增图片</option><option value="2">维护图片</option><option value="3">新增新闻</option></select>

selFunc函数代码:

function selFunc(){$("#selText").text($("#sel").val())
}

使用jQuery语法:$("#sel").val()或js语法:document.getElementById("sel").value均可得到所选值
要想获得选中的option的文本,使用$("#sel").attr("relText")获得relText属性值即可。
注意onchange函数中不能传递this,例如使用selFunc(this)是无法通过this.value获得值

下拉框不可用时效果:

代码:

<select disabled="true"><option value="">请选择功能</option><option value="1">新增图片</option><option value="2">维护图片</option><option value="3">新增新闻</option>
</select>

要动态设置下拉框是否可用见下面“动态修改下拉框”。

宽度设置

下拉框默认会有一个宽度,即使选项里面有很长的文字。如果想要下拉框的宽度适应最长选项的宽度,则设置select标签的autoWidth="true"。效果如下:

 <select autoWidth="true"><option value="0">请选择功能</option><option value="新增图片">很长的选项文字很长的选项文字</option><option value="维护图片">维护图片</option><option value="新增新闻">新增新闻</option></select>
<select autoWidth="true"><option value="10">10</option><option value="20">20</option><option value="50">50</option><option value="100">100</option></select>

另外还可以通过style强制一个宽度,注意只有当 autoWidth="true"时有效
文本框:
下拉框:

 文本框:<input type="text"  style="width:350px;"/><br />下拉框:<select autoWidth="true" style="width:350px;"><option value="0">请选择功能</option><option value="新增图片">新增图片</option><option value="维护图片">维护图片</option><option value="新增新闻">新增新闻</option></select>

下拉框分组

下拉框支持分组,效果如下:
代码与普通select分组代码一样

<select><option>请选择权限</option><optgroup label="首页信息发布"><option value="新增图片">新增图片</option><option value="维护图片">维护图片</option><option value="新增新闻">新增新闻</option></optgroup><optgroup label="人员维护"><option value="新增用户">新增用户</option><option value="用户列表">用户列表</option></optgroup>
</select>

下拉框可编辑

设置下拉框的editable="true",就把它变成了一个可编辑的下拉框。见下面

下拉框会自动生成一个editValue属性。通过这个属性来获得输入或选择的值,注意这时得到的值不是option的value而是显示在下拉框中的字符。

<select editable="true" id="editSel" ><option value="">请输入或选择</option><option value="1">新增图片</option><option value="2">维护图片</option><option value="3">新增新闻</option></select><input type="button" value="获取值" onclick="getSelValue()"/>

getSelValue()函数代码:

function getSelValue(){var msg="";msg=$("#editSel").attr("editValue")if(msg==""||msg==undefined){msg="无输入"}alert(msg);
}

下拉框联动

下拉框可以实现无限极ajax联动。实现联动步骤:
1、对父select设置childId,childId指定为想要联动的下拉框。
2、对父select设置childDataPath,childDataPath为读取数据的路径。 下拉框会自动以”该路径+选中option的value“拼出url来获取数据。例如 childDataPath="http://192.168.31.30:8080/kj/trainplan.do?method="而某个option的value为bj1则当选择该项时会自动读取 http://192.168.31.30:8080/kj/trainplan.do?method=bj1来取得xml数据赋给子下拉框。
3、如果数据不是以url取得的而是从文件中取得,则需要设置childDataType属性。 例如childDataPath="xmlData/"而childDataType="xml"则数据将从"xmlData/bj1.xml"取得。如果是从txt文件取得则childDataType="txt"
4、使用jQuery语法:$("#sel").val()或js语法:document.getElementById("sel").value可得到所选值,使用$("#sel").attr("relText")可得到选中option的文本。 举例如下:
二级联动:IE浏览器想观看效果请将本页面放在服务器目录下通过http地址访问
所学专业:    所属班级:
代码如下:

所学专业:
<select id="sxzy" childId="ssbj" childDataPath="xmlData/" childDataType="xml"><option value="">请选择专业</option><option value="bj1">专业1</option><option value="bj2">专业2</option><option value="bj0">大数据测试</option></select>  所属班级:<select id="ssbj"><option value="0">请先选择专业</option></select>
<input type="button" value="获取选中值" onclick="getOptValue1()"/>

如上代码所示,有父与子两个select,设置父select的childId为子的id名,并设置childDataPath和childDataType。
因为本例使用的是xml文件,所以childDataType="xml"。实际使用时如果是从action或jsp中读取的,则不用写childDataType或childDataType="url"
注意:不需要联动的选项要将option的value设为空,例如本例的”请选择专业“选项。 不可以不写value否则系统会默认设置为option的文本值。
子下拉框读取的XML数据格式如下:

<?xml version="1.0" encoding="UTF-8"?>
<root><node value="bj1" text="班级1"/><node value="bj2" text="班级2"/>
</root>

其中头部一定要有,encoding值根据所属工程的编码而定。如果工程是GBK编码,则头部应encoding="GBK" 取得所选择值的函数getOptValue1代码如下:

function getOptValue1(){var msg="";msg="value:"+$("#sxzy").val()+","+$("#ssbj").val()+"<br/>"+"文本:"+$("#sxzy").attr("relText")+","+$("#ssbj").attr("relText")alert(msg);
}

再看一个三级联动例子:IE浏览器想观看效果请将本页面放在服务器目录下通过http地址访问
学院:    专业:    班级:
代码如下

学院:
<select id="xy" childId="zy" childDataPath="xmlData/" childDataType="xml"><option value="">请选择学院</option><option value="zy1">学院1</option><option value="zy2">学院2</option>
</select>
专业:
<select id="zy" childId="bj" childDataPath="xmlData/" childDataType="xml"><option value="">请先选择学院</option>
</select>  班级:
<select id="bj"><option value="">请先选择专业</option>
</select>
<input type="button" value="获取选中值" onclick="getOptValue2()"/>

每次选择学院时,只要option的value不为空就会通过ajax读取数据赋给选择专业的下拉框。路径分别为"xmlData/zy1.xml"和"xmlData/zy2.xml"。 zy1.xml的数据如下:

<?xml version="1.0" encoding="UTF-8"?>
<root><node value="" text="请选择专业"/><node value="bj1" text="专业1"/><node value="bj2" text="专业2"/><node value="bj3" text="专业3"/>
</root>

每次选择专业时,只要option的value不为空就会通过ajax读取数据赋给选择班级的下拉框。路径分别为"xmlData/"下的bj1.xml——bj6.xml。 bj1.xml的数据如下:

<?xml version="1.0" encoding="UTF-8"?>
<root><node value="01" text="班级1"/><node value="02" text="班级2"/>
</root>

获取所选值函数代码:

function getOptValue2(){var msg="";msg="value:"+$("#xy").val()+","+$("#zy").val()+","+$("#bj").val()+"<br/>"+"文本:"+$("#xy").attr("relText")+","+$("#zy").attr("relText")+","+$("#bj").attr("relText")alert(msg);
}

这里要注意的是,每次取的XML数据最好都加一条“请选择XX”的node节点(最后一个select的数据除外)并将value设为空。如

<root><node value="" text="请选择专业"/><node value="zy1" text="专业1"/><node value="zy2" text="专业2"/><node value="zy3" text="专业3"/>
</root>

因为如果不加这一项,第二级select默认会联动到“专业1”,而第三级却不会自动联动到“专业1”所对应的班级。
所以第二级加上value=""的选项,这样第三级不自动联动也不会有问题。这时再选择第二级就会触发联动实现第三极加载。
而第三级是最后一级所以不必加value=""的选项,直接关联到第一项“班级1”即可。

更多级联动的下拉框也是上面的思路,请自行尝试。

自定义列数

当下拉框项目过多时,可以对select设置colNum来指定列数,并且设置colWidth指定每列宽度。效果如下:
代码如下:

<select colNum="3" colWidth="90"><option>北京市</option><option>天津市</option><option>河北省</option><option>山西省</option><option>内蒙古自治区</option><option>辽宁省</option><option>吉林省</option><option>黑龙江省</option><option>上海市</option><option>江苏省</option><option>浙江省</option><option>安徽省</option><option>福建省</option><option>江西省</option><option>山东省</option><option>湖南省</option><option>湖北省</option><option>河南省</option><option>广东省</option><option>广西壮族自治区</option><option>海南省</option><option>重庆市</option><option>四川省</option><option>贵州省</option><option>云南省</option><option>西藏自治区</option><option>陕西省</option><option>甘肃省</option><option>青海省</option><option>宁夏回族自治区</option><option>新疆维吾尔自治区</option><option>香港特别行政区</option><option>澳门特别行政区</option><option>台湾省</option><option>其他</option>
</select>

如果不指定列宽,则每列会以最大项目的宽为列宽。效果如下:
代码如下:

<select colNum="3"><option>北京市</option><option>天津市</option><option>河北省</option><option>山西省</option><option>内蒙古自治区</option><option>辽宁省</option><option>吉林省</option><option>黑龙江省</option><option>上海市</option><option>江苏省</option><option>浙江省</option><option>安徽省</option><option>福建省</option><option>江西省</option><option>山东省</option><option>湖南省</option><option>湖北省</option><option>河南省</option><option>广东省</option><option>广西壮族自治区</option><option>海南省</option><option>重庆市</option><option>四川省</option><option>贵州省</option><option>云南省</option><option>西藏自治区</option><option>陕西省</option><option>甘肃省</option><option>青海省</option><option>宁夏回族自治区</option><option>新疆维吾尔自治区</option><option>香港特别行政区</option><option>澳门特别行政区</option><option>台湾省</option><option>其他</option>
</select>

动态创建下拉框

与普通动态添加dom节点的方法一样,不同的是要在添加完毕的最后对其调用selectbox()方法来动态渲染。

代码:

<input type="button" value="点击生成下拉框" id="testBtn"/>

JS代码

$(function(){$("#testBtn").click(function(){var $selbox=$('<select><option value="0">请选择功能</option><option value="1">新增图片</option><option value="2">维护图片</option></select>')$(this).after($selbox)//将下拉框加到按钮的后面$selbox.selectbox();//渲染下拉框})
})

能够调用selectbox()方法的必须是一个jQuery节点对象。如果是普通的dom对象,需要用$(xxx)来转成jQuery节点对象。

动态修改下拉框

和修改普通下拉框的做法一样,不同的是需要在最后调用selRefresh(下拉框ID)来更新显示。

代码如下:

<select  id="sel2"><option value="0">请选择功能</option><option value="1">新增图片</option><option value="2">维护图片</option><option value="3">新增新闻</option>
</select>
<input type="button" value="选中第2项" onclick="changeItem()"/>
<input type="button" value="新增1项" onclick="addItem()"/>
<input type="button" value="删除1项" onclick="removeItem()"/>
<input type="button" value="设为不可用" onclick="disableSelect()"/>
<input type="button" value="设为可用" onclick="enableSelect()"/>

函数如下:

function changeItem(){$("#sel2").val(2);selRefresh("sel2");
}
var idx=3
function addItem(){idx++var sel=$("#sel2")[0];sel.options[sel.options.length] = new Option("新增项", idx);$("#sel2").val(idx);selRefresh("sel2");
}
function removeItem(){var sel=$("#sel2")[0];sel.options.length--;idx--$("#sel2").val(idx);selRefresh("sel2");
}
function disableSelect(){$("#sel2").attr("disabled",true);selRefresh("sel2");
}
function enableSelect(){$("#sel2").attr("disabled",false);selRefresh("sel2");
}

另外selRefresh()中的参数也可以是下拉框的jQuery节点对象。

恢复系统默认

如果希望使用系统默认的下拉框,则使用class

<select class="default"><option value="1">新增图片</option><option value="2">维护图片</option><option value="3">新增新闻</option></select>

转载于:https://www.cnblogs.com/haiwei_sun/articles/2595772.html

select下拉框美化相关推荐

  1. html5 下拉框 美化,纯js超酷select下拉框美化插件

    tastySelect是一款纯js超酷select下拉框美化插件.tastySelect下拉框插件支持多选,内置两种主题,使用CSS3动画过渡效果,整体设计时尚大方. 使用方法 在页面中引入tasty ...

  2. html设置下拉筛选可以多选,select下拉框(支持筛选、多选)

    Chosen 是一个支持jQuery的select下拉框美化插件,它能让丑陋的.很长的select选择框变的更好看.更方便.不仅如此,它更扩展了select,增加了自动筛选的功能.它可对列表进行分组, ...

  3. select下拉框(支持筛选、多选)

    Chosen 是一个支持jQuery的select下拉框美化插件,它能让丑陋的.很长的select选择框变的更好看.更方便.不仅如此,它更扩展了select,增加了自动筛选的功能.它可对列表进行分组, ...

  4. html 下拉框 只读属性,Select下拉框的只读属性设置

    今天在系统中增加一个查询的筛选条件,通过下拉框选取,用的是Angular常见的ng-options 指令: 情况:根据取得的值去选定select下拉框的选项. 引一个jquery.CSS:body{m ...

  5. h5、select下拉框右边加图标,深度美化页面增进用户体验

    h5.select下拉框右边加图标,深度美化页面增进用户体验 1.那么我们先来看一下效果吧! 2.再看看h5的结构: <div id="login-div"><d ...

  6. 下拉选框样式html,超酷select选择下拉框美化jQuery插件

    jquery-nice-select是一款轻量级的select下拉选择框美化jQuery插件.该插件可以将原生的select元素转换为自定义样式的下拉选择框,并且在选择时带有很酷的CSS3过渡动画效果 ...

  7. layui 下拉框空选项不显示_layui下select下拉框不显示或没有效果

    Layui会对select.checkbox.radio等原始元素隐藏,从而进行美化修饰处理.但这需要依赖于form组件,所以你必须加载 form,并且执行一个实例.值得注意的是:导航的Hover效果 ...

  8. layui下拉框怎么获取自定义值_layui如何得到select下拉框选中的值?

    layui如何得到select下拉框选中的值?下面本篇文章介绍一下layui取得select下拉框选中值的方法.有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助. layui如何得到se ...

  9. layui怎么给下拉框赋值_layui给select下拉框赋值

    转: layui给select下拉框赋值 //重新渲染表单函数 function renderForm() { layui.use('form', function() { var form = la ...

最新文章

  1. 【LeetCode】732. 我的日程安排表 III
  2. envi与arcgis文件转换_ArcGIS、MapInfo、ENVI、MapGIS等矢量格式相互转换
  3. java项目遇到的问题_java系列:项目中遇到的一些问题(持续更新中)
  4. excel拼接数据宏
  5. 动态执行shell脚本
  6. python爬虫 单线程的多任务异步协程
  7. Python 获取(字典)字符串时间区间并转换类型,判断该时间段属否在时间范围
  8. VBA笔记 退出循环、Sub、Fuction等的Exit语句
  9. php 上传图片 裁剪,thinkphp_图片上传裁剪功能_已迁移
  10. 厉害!不到30行代码,自制成语接龙小游戏
  11. 安装dump1090
  12. C - Alphabetic Removals
  13. 浅谈ERP数据的重要性
  14. 奇怪的同床人:指纹现象……或state.gov与facebook.com
  15. 【Unity】Jay 开发日志(六)——暂停和结束菜单的创建
  16. 微信小程序收款手续费_为什么有人做的小程序交易手续费是0.38%而不是0.6%?
  17. win10系统回收站清空了怎么恢复?简单几步找回丢失文件
  18. java抽象类存在的意义
  19. 国产开源「文本-视频生成」模型!免费在线体验,一键实现视频生成自由
  20. 小米米家打印机,打印状态提示出错无法正常打印,怎么办?

热门文章

  1. 续说零拷贝(Zero-Copy) - DMA技术
  2. Redis设计于实现之字典
  3. 解决安装pytorch慢的方法(pip安装)
  4. c++ map利用迭代器赋值
  5. ubuntu18下安装微信
  6. Leetcode题库 2038.邻色同删(双指针法 C实现)
  7. C++——可变模板参数
  8. 纯券过户(free of payment)
  9. linux中Shell历史命令记录文件的路径是什么
  10. ZK安装、ZK配置、ZK集群部署踩过的大坑