由于后端开发需要一个下拉控件,能输入,能选择,于是自己写了一个

;(function($,window,document,undefined){
function Select(el,opt){
this.$el = el;
this.default={
title:'选择类别',
showTitle:true,
wth:'',// ''100%,half:50%,third:30%
require:true,
items:[{
id:"01",
contxt:'项目一'
},{
id:"02",
contxt:'项目二'
}]
}
this.settings = $.extend({},this.default,opt);
}
Select.prototype={
init:function(){
var that = this,
$html=$('<div class="title"><span class="eis-require">*</span>\n'+
that.settings.title+
'</div>\n'+
'<div class="es-input-wrapper">\n' +
' <div class="input-box">\n' +
' <input type="text" value="" placeholder="'+that.settings.title+'">\n'+
'<i class="fa fa-angle-down"></i>\n' +
'<ul class="eis-new-form-dropmenu"></ul>'+
' </div>\n' +
' </div>');
that.$el.append($html);
var $list=that.$el.find('.eis-new-form-dropmenu'),
$require = that.$el.find('.eis-require'),
$input = that.$el.find('input[type="text"]'),
$title=that.$el.find('.title'),
$inputWrapper=that.$el.find('.es-input-wrapper');
//判断显示标题
if(that.settings.showTitle===false){
$title.remove()
$inputWrapper.css({'margin-left':"0"})
}else{
$inputWrapper.css({'margin-left':"100"})
}
if(!that.$el.hasClass('es-form-group')){
that.$el.addClass('es-form-group')
}
switch (that.settings.wth){
case '':
break
case 'half':
that.$el.addClass('half');
break;
case 'third':
that.$el.addClass('third')
}
// 添加下拉列表
var $listHtml = '';
if(that.settings.items && that.settings.items.length>0){
for(var i = 0;i<that.settings.items.length;i++){
$listHtml+='<li class="eis-dropmenu-item">'+that.settings.items[i]['contxt']+'</li>'
}
$list.html($listHtml)
}
//判断显示必填
if(that.settings.require){
$require.text('*')
}else(
$require.text('')
)
//下拉展示收缩
var $dropToggle = that.$el.find('.fa');
$dropToggle.on('click',function(e){
if(e){
e.stopPropagation();
}else{
window.event.cancelBubble=true
}
if($(this).get(0).style['transform']==''){
$(this).get(0).style['transform']='translate(0,-50%) rotate(180deg)';
}else if( $(this).get(0).style['transform']==='translate(0px, -50%) rotate(180deg)'){
$(this).get(0).style['transform']='translate(0,-50%) rotate(0deg)';
}else{
$(this).get(0).style['transform']='translate(0,-50%) rotate(180deg)'
}
$list.slideToggle()
})
var $listItem = $list.find('.eis-dropmenu-item');
$listItem.each(function(){
$(this).on('click',function(e){
if(e){
e.stopPropagation();
}else{
window.event.cancelBubble=true
}
$input.val('');
$input.val($(this).text())
$list.slideToggle()
})
})
$(document).on('click',function(){
$list.hide();
})
}
}
$.fn.extend({
select:function(opt){
return this.each(function(){
new Select($(this),opt).init()
})
}
})
})(jQuery,window,document)

外部调用

$(function(){
$('#select').select({
title:'联系人',//标题
wth:'half',// ''100%,half:50%,third:30%
require:true,//true,显示红*,false不显示
showTitle:false,//是否显示标题
//item数据
items:[{
id:"01",
contxt:'项目一'
},{
id:"02",
contxt:'项目二'
}]
})
})

下拉控件jQuery插件的更多相关文章

  1. java 下拉控件 转自 http://www.cnblogs.com/lhb25/p/form-enhanced-with-javascript-three.html

    表单元素让人爱恨交加.作为网页最重要的组成部分,表单几乎无处不在,从简单的邮件订阅.登陆注册到复杂的需要多页填写的信息提交功能,表单都让开发者花费了大量的时间和精力去处理,以期实现好用又漂亮的表单功能 ...

  2. 一不小心写了个bootstrap风格下拉控件 JqueryUI + bootstrap

    受够了EasyUI的封闭,Bootstrap虽然华丽但是功能太渣,闲着无聊写个下拉控件玩玩吧,不喜勿喷哈... 第一步:先设计下我的下拉控件的样子 1.既然是bootstrap风格的,我想应该是这样的 ...

  3. DevExpress控件GridView挂下拉控件无法对上值

    下拉控件使用RepositoryItemLookUpEdit,加入如下事件进行处理. repositoryItemLookUpEdit1.CustomDisplayText += new DevExp ...

  4. scrollview嵌套下拉控件嵌套recyclerview(不动第三方原基础自定义)

    相信会碰到很多类似的需求,一个列表控件,然后控件上方的一个头部需要自定义,这样就不好有时候也不能加在列表控件的头部了,那必须得嵌套一层scrollview了,没毛病,那么一般的列表控件都是有上拉下拉的 ...

  5. 基于bootstrap的multiple-select下拉控件使用

    multiple-select是一款优秀的下拉菜单控件,能够支持单选和多选. 详细参考文档: JS组件系列——两种bootstrap multiselect组件大比拼 multiple-select ...

  6. 解决easyUI下拉控件无法触发onkeydown事件

    实现在combotree下拉控件中按Backspace键清除combotree选中的值 下面的代码无法获取到键盘事件 <input class="easyui-combotree&qu ...

  7. 使用谷歌提供的SwipeRefreshLayout下拉控件,并自定义实现下拉加载的功能

    package com.loaderman.swiperefreshdemo; import android.os.Bundle; import android.os.Handler; import ...

  8. SDI在自定义的工具栏上添加下拉控件

    0.首先到自己的工具条上新建一个控件,并命名新ID 1.拷贝FlatComboBox.h和FlatComboBox.cpp到工程目录下 2.建立新类 class CTrackerToolBar : p ...

  9. JQuery下拉控件select的操作汇总

    JQuery获取和设置Select选项方法汇总如下: 获取select 先看看下面代码:   $("#select_id").change(function(){//code... ...

随机推荐

  1. Java Web中涉及的编解码

    用户从浏览器发起一个HTTP请求,存在编码的地方是URL.Cookie.Paramiter.服务器端接收到HTTP请求后要解析HTTP协议,其中URL.Cookie和POST表单参数要解码,服务器端可 ...

  2. JVM垃圾回收器之G1(Garbage First)--new

    相比CMS收集器有两个显著的改进: (1). G1收集器是基于“标记-整理”算法实现的收集器,不会产生空间碎片 (2). 它可以精确地控制停顿,能让使用者明确指定在一个长度为M毫秒的时间片段内,消耗在 ...

  3. 【node】fs模块,文件和目录的操作

    检查文件是否存在,查询文件信息 fs.stat() fs.stat('./server.js', function (err, stat) { if (stat && stat.isF ...

  4. linux 局域网探测工具nmap

    NMap,也就是Network Mapper,是Linux下的网络扫描和嗅探工 具包,其基本功能有三个, 一是探测一组主机是否在线: 其次是扫描主机端口,嗅探所提供的网络服务: 还可以推断主机所用的操 ...

  5. php 打印

    php 打印功能需要printer.dll文件 扩展下载地址 http://downloads.php.net/pierre/ 这里有很多PHP的扩展

  6. Coroutine及其实现

    线程是内核对外提供的服务,应用程序可以通过系统调用让内核启动线程,由内核来负责线程调度和切换.线程在等待IO操作时线程变为unrunnable状态会触发上下文切换.现代操作系统一般都采用抢占式调度,上 ...

  7. .NET Core Web 文件分片上传,带进度条实用插件

    话不多说,上源码连接: 链接:https://pan.baidu.com/s/1_u15zqAjhH0aVpeoyVMfUA 提取码:z209

  8. iOS设计模式 - 备忘录

    iOS设计模式 - 备忘录 原理图 说明 1. 在不破坏封装的情况下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样以后就可以将该对象恢复到原先保存的状态 2. 本人已经将创建状态与恢复状态 ...

  9. 使用CocoaPods

    使用CocoaPods 1. 安装CocoaPods 有时候,默认的 https://rubygems.org/ 访问不了,你需要先执行以下命令移除掉sources gem sources -r ht ...

  10. Spring 如何在 WEB 应用中使用

    1. Spring 如何在 WEB 应用中使用 ? 1). 需要额外加入的 jar 包: spring-web-4.0.0.RELEASE.jar spring-webmvc-4.0.0.RELEAS ...