基于jquery封装的颜色下拉选择框
应同事要求,花了半个小时,写了一个简单的选择颜色的下拉框控件,可以控制输入框指示结果颜色
也贴出来,说不定哪天有用
if (typeof jQuery === 'undefined') { throw 'no jquery'; }
(function () {
window.UE_CONTROL_IDX = 0;
$.fn.GetRect = function () {
var r = $(this).get(0).getBoundingClientRect(),
t = document.documentElement.clientTop,
l = document.documentElement.clientLeft;
return {
top: r.top - t,
bottom: r.bottom - t,
left: r.left - l,
right: r.right - l
}
}
'use strict';
window.UEColorCombox || (window.UEColorCombox = {
config: {
isShowTargetColor:false,
data:['red','green','blue','yellow','black','white'],
style: ''
+ '<style id="ue_colorcombox_style">'
+ ' .ue_colorcombox_frame {border:1px solid #999;border-radius:3px;width:120px;height:auto;overflow:hidden;position:absolute;font-size:12px;user-select:none;margin: 0;padding: 3px;background-color:#fff;display:none;z-index:2;}'
+ ' .ue_colorcombox_item {border:none;width:120px;height:16px;line-height:16px;padding:2px;overflow:hidden;cursor:pointer;}'
+ ' .ue_colorcombox_color {border:none;border-radius:3px;width:32px;height:16px;float:left;cursor:pointer;}'
+ ' .ue_colorcombox_text {border:none;border-radius:3px;width:80px;padding-left:6px;height:16px;line-height:16px;float:left;cursor:pointer;}'
+ ' .ue_colorcombox_target {user-select:true;}'
+ '</style>',
},
showCombox: function () {
var cb = this, list = cb.config.data;
cb.colorComboxDom = cb.colorComboxDom || $('<div class="ue_colorcombox_frame"></div>').appendTo($('body'));
if (cb.colorComboxDom.children().length < 1) {
cb.colorComboxDom.html('');
for (var i = 0; i < list.length; i++) {
var bgcolor = (i % 2) == 0 ? '#fff' : '#eee';
cb.colorComboxDom.append('<div class="ue_colorcombox_item" bgc="' + bgcolor + '" style="background:' + bgcolor + ';"><div class="ue_colorcombox_color" style="background:' + list[i] + ';"></div><div class="ue_colorcombox_text">' + list[i] + '</div></div>');
}
}
cb.colorComboxDom.show();
cb.setComboxPosition();
$('.ue_colorcombox_item').off('click').on('click', function () {
var v = $(this).find('.ue_colorcombox_text').html()
if (cb.config.isShowTargetColor) {
cb.target.css('background-color', v)
}
cb.target.html(v).val(v);
cb.colorComboxDom.hide();
});
$('.ue_colorcombox_text').off('mouseenter').on('mouseenter', function () {
$(this).parent().css('background-color', '#ccc');
$(this).css('background-color', '#ccc');
}).off('mouseleave').on('mouseleave', function () {
var bgc = $(this).parent().attr('bgc');
$(this).parent().css('background-color', bgc);
$(this).css('background-color', bgc);
});
$('.ue_colorcombox_color').off('mouseenter').on('mouseenter', function () {
$(this).parent().css('background-color', '#ccc');
$(this).next().css('background-color', '#ccc');
}).off('mouseleave').on('mouseleave', function () {
var bgc = $(this).parent().attr('bgc');
$(this).parent().css('background-color', bgc);
$(this).next().css('background-color', bgc);
});
},
setComboxPosition: function () {
var ww = $(window).width(),
wh = $(window).height(),
bt = $('body').scrollTop(),
bl = $('body').scrollLeft(),
cw = this.colorComboxDom.outerWidth(),
ch = this.colorComboxDom.outerHeight(),
tw = this.target.outerWidth(),
th = this.target.outerHeight(),
rc = this.target.GetRect();
if ((rc.top + th + ch + 5) < wh) {
this.colorComboxDom.css({ top: rc.top + th });
} else {
this.colorComboxDom.css({ top: rc.top - ch });
}
if ((rc.left + cw) > ww) {
this.colorComboxDom.css({ left: (ww - cw) });
} else {
this.colorComboxDom.css({ left: rc.left });
}
},
bind: function (tg, f) {
if ($('#ue_colorcombox_style').length < 1) {
$(this.config.style).appendTo('head');
}
var id = UE_CONTROL_IDX++;
if (this.config.isShowTargetColor) {
tg.css('background-color', tg.val() || tg.html() || 'white')
}
tg.attr('idx', id).attr('tabindex', id).addClass('ue_date_target')
.off('focus').on('focus', function () {
if ($(this).attr('idx') * 1 != UEColorCombox.idx) {
$('.ue_colorcombox_pop[idx=' + UEColorCombox.idx + ']').remove();
}
UEColorCombox.show(this);
});
},
show: function (tg) {
var c = this.config;
this.target = t = $(tg);
this.idx = t.attr('tabindex') * 1;
c.width = c.width || tg.width();
c.height = c.height || tg.height();
this.showCombox();
},
}); $.fn.bindUEColorCombox = function (f) {
UEColorCombox.bind($(this), f);
}; }());
/* 调用示例
<div id="testDate1" style="width:160px; height:30px; border:1px solid #ddd; ">red</div><br />
<input id="testDate2" style="width:160px; height:30px; border:1px solid #ddd;" value="green" />
<script type="text/javascript">
var dt1 = $('#testDate1').bindUEColorCombox('u');
var dt2 = $('#testDate2').bindUEColorCombox('u');
</script>
*/
基于jquery封装的颜色下拉选择框的更多相关文章
- 基于jQuery美化联动下拉选择框
今天给大家介绍一款基于jQuery美化联动下拉选择框.这款下下拉选择框js里自带了全国所有城市的数数库.下拉选择框适用浏览器:IE8.360.FireFox.Chrome.Safari.Opera.傲 ...
- FancySelect – 更好用的 jQuery 下拉选择框插件
FancySelect 这款插件是 Web 开发中下拉框功能的一个更好的选择.FancySelect 使用方便,只要绑定页面上的任何 Select 元素,并调用就 .fancySelect() 就可以 ...
- Dropdown.js基于jQuery开发的轻量级下拉框插件
Dropdown.js 前言 在SPA(Single Page Application)盛行的时代,jQuery插件的轮子正在减少,由于我厂有需求而开发了这个插件.如果觉得本文对您有帮助,请给个赞,以 ...
- jquery.chosen.js下拉选择框美化插件项目实例
由于之前使用的bootstrap-select插件是建立在bootstrap基础上的,实际使用到项目中的时候,与我们使用的ace-admin(基于bootstrap)存在样式冲突,导致下拉框的样式发生 ...
- 基于jQuery的input输入框下拉提示层(自动邮箱后缀名)
基于jQuery的input输入框下拉提示层,方便用户输入邮箱时的提示信息,需要的朋友可以参考下 效果图 // JavaScript Document (function($){ $.fn ...
- ul+jquery自定义下拉选择框
<!doctype html> <html> <head> <meta charset="UTF-8"> <title> ...
- jQuery插件——下拉选择框
其实,之前也写过jQuery插件,今天写的是一个模拟select选择的下拉插件. 既然是jQuery插件,那么必然是依赖jQuery的了. 老规矩,直接上代码吧! ;(function () { $. ...
- CSS3不一样的下拉选择框
本例中包含两个下拉选择框的动画示例,本例中并未使用select标签.本例中第一个案例也可用于标题.导航栏等位置. 案例一: html布局 <div class="content&quo ...
- combobox级联检索下拉选择框
1.效果图 2.前端 @{ ViewBag.Title = "Index"; Layout = null; @*自动筛选下拉框*@ <script src="~/S ...
随机推荐
- Starling项目启动时报错This application is not correctly embedded (wrong wmode value)
这个其实是Flash报的“ErrorEvent:. text=Error #3702: Context3D 不可用”错误被Starling变了一下. 解决方法:找到项目文件夹中的html-templa ...
- iOS屏幕适配
## iOS屏幕适配 ### iOS屏幕适配发展史 1> iPhone4以前(没有iPad) * 不需要屏幕适配 2> iPad.iPhone5等设备出现 * 需要做横竖屏适配 * aut ...
- Android自动化学习笔记:编写MonkeyRunner脚本的几种方式
---------------------------------------------------------------------------------------------------- ...
- .net 中select和where的区别
Select(p=>p.ID==id) 这里选择的结果是通过p,访问迭代器,然后选取的是p.ID==id的结果,选择到的是bool对象 Where(p=>p.ID==id) 这里是过滤,p ...
- Android IOS WebRTC 音视频开发总结(七七)-- WebRTC的架构和协议栈
本文主要介绍WebRTC的架构和协议栈(我们翻译和整理的,译者:litie),最早发表在[编风网] 支持原创,转载必须注明出处,欢迎关注我的微信公众号blacker(微信ID:blackerteam ...
- 1045 - Access denied for user 'root'@'localhost'(using password NO)解决方案
原因为输入了不正确的密码,连接数据库时输入正确的密码即可! 另外一个原因是安装MySQL后MySQL产生了一个随机密码,而登录的时候没有将随机密码填上,解决方案见:http://www.cnblogs ...
- centos,nginx安装备忘
# ssh 登录慢解决 vim /etc/ssh/sshd_config UseDNS no # add limitsvi /etc/security/limits.conf* soft nproc ...
- JS验证输入网址
function CheckUrl(a) { var falg = true; var regstr = /^http(s)?:\/\/([\w-]+\.)+[\w-]+(\/[\w- . ...
- Ubuntu 12.04搭建l2tp服务器记录。
1. 安装openswan apt-get install openswan 2.打开 /etc/ipsec.conf 文件,做如下配置: 其中,virtual_privat这里包含的网络地址允许配置 ...
- 从一个复杂的json格式的String内获取某key的值
如题,如何简单的从一个复杂的String格式内获取某个key的值. 例如:从下面String下取到status的值. {"response":{"info":{ ...