20160520—JS打分控件
效果预览:

可实现功能:鼠标在滑动条内左右滑动,文本框内分数变动;文本框输入数字,滑动条长度自动改变。
JavaScript代码:
$(function () { scoreFun($("#ScoreBlock")); })
function scoreFun(object) {
var defaults = {
SocreWidth: 2, //每一分 的宽度
SocreCount: 100, //a的个数
ScoreSet: 1, //每个a的分数设置
ScoreDiv: "ScoreDiv", //a的容器
ScoreTextID: "txtScore"//接收用的TextBox,根据ID查找
};
options = $.extend({},
defaults);
var socre_div = $("#" + options.ScoreDiv);
var socre_txt = $("#" + options.ScoreTextID);
var socre_set = options.ScoreSet;
var now_cli;
var socre_w = options.SocreWidth;
var len = options.SocreCount;
socre_div.width(socre_w * len);
for (var i = 0; i < len; i++) {
var newSpan = $("<a href='javascript:void(0)' id='SocreA" + i + "'></a>");
newSpan.css({
"left": 0,
"width": socre_w * (i + 1),
"z-index": len - i
});
newSpan.appendTo(socre_div)
}
socre_div.find("a").each(function (index, element) {
//点击滑动条 锁定分数
//$(this).click(function () {
// now_cli = index; //这是锁定分数的关键
// show(index, $(this));
//});
//鼠标在滑动条上悬浮时 锁定分数
$(this).mouseenter(function () {
now_cli = index;//这是锁定分数的关键
show(index, $(this));
});
//鼠标离开时
$(this).mouseleave(function () {
if (now_cli >= 0) {
var scor = socre_set * (parseInt(now_cli) + 1);
socre_div.find("a").removeClass("clibg");
socre_div.find("a").eq(now_cli).addClass("clibg");
var ww = socre_w * (parseInt(now_cli) + 1);
socre_div.find("a").eq(now_cli).css({
"width": ww,
"left": "0"
});
socre_txt.val(scor);
} else {
socre_div.find("a").removeClass("clibg");
socre_txt.val("");
}
})
});
//获取分数
function show(num, obj) {
var n = parseInt(num) + 1;
var lefta = num * socre_w;
var ww = socre_w * n;
var scor = socre_set * n;
object.find("a").removeClass("clibg");
obj.addClass("clibg");
obj.css({
"width": ww,
"left": "0"
});
//传值
socre_txt.val(scor);
}
};
//只允许输入数字的验证
function RepNumber(obj) {
var reg = /^[\d]+$/g;
if (!reg.test(obj.value)) {
var txt = obj.value;
txt.replace(/[^0-9]+/, function (val) {//匹配第一次非数字字符
obj.value = val.replace(/\D/g, ""); //将非数字字符替换成""
})
}
//最大值为100
if (obj.value.length > 2) {
obj.value = 100;
}
//文本变动时 滑动条自动变动
var scoreA = $("#SocreA" + (obj.value - 1));
$("#ScoreDiv").find("a").removeClass("clibg");
scoreA.addClass("clibg");
}
HTML代码:
<div id="ScoreBlock">
<div class="score_b">
</div>
<div id="ScoreDiv" class="score_div" title="左右滑动鼠标调节分数">
</div>
<div class="score_b">
</div>
<p>
您的评分:
<input id="txtScore" type="text" onkeyup="javascript:RepNumber(this)" maxlength="3" />
分
</p>
</div>
CSS样式:
/*评分相关*/
#ScoreBlock{ margin:10px; height:20px;}
#ScoreBlock .score_div,#ScoreBlock p{ float:left;}
#ScoreBlock p{ margin:0px; padding-left:20px; line-height:20px; display:inline-block;}
#ScoreBlock p span{ color:#C00; font-size:16px; font-family:Georgia, "Times New Roman", Times, serif;}
#ScoreBlock .score_b { background:url(../Img/ScoreFull.png);width:2px; height:20px; float:left; position:relative;}
#ScoreBlock .score_div { background:url(../Img/ScoreBorder.png);width:160px; height:20px; position:relative;}
#ScoreBlock .score_div a{ height:20px; display:block; position:absolute;left:;}
#ScoreBlock .score_div a:hover{ background:url(../Img/ScoreFull.png);left:;}
#ScoreBlock .score_div a.clibg{ background:url(../Img/ScoreFull.png);left:;}
#txtScore{color:#CC0000;font-family:Georgia;font-size:16px;font-weight:bold;width:50px;}
使用的图片:
(尺寸大小均为20*20 像素)
ScoreBorder.png
( 实际图片没有这个黑色的阴影 - -!)
ScoreFull.png

20160520—JS打分控件的更多相关文章
- js树形控件
js树形控件 ztree http://www.treejs.cn/
- Atitit.js图表控件总结
Atitit.js图表控件总结 1. 为什么要使用图表1 2. 图表分类1 3. 数据可视化的优点1 4. 流行的js图表类库1 5. 参考2 1. 为什么要使用图表 因为要可视化 2. 图表分类 条 ...
- js设置控件的隐藏与显示的两种方法
js设置控件的隐藏与显示,设置控件style的display和visibility属性就可以了,下面有个示例,需要的朋友可以参考下用JavaScript隐藏控件的方法有两种,分别是通过设置控件的sty ...
- 简洁JS 日历控件 支持日期和月份选择
原文出处 以下这个JS日历控件是我的闲暇之余自己编写的,所有的代码全部在IE7/IE8/Firefox下面测试通过, 而且可以解决被iframe层遮盖的问题.现在只提供两种风格(简洁版和古典版)和两种 ...
- JS日历控件优化(增加时分秒)
JS日历控件优化 在今年7月份时候 写了一篇关于 "JS日历控件" 的文章 , 当时只支持 年月日 的日历控件,现在优化如下: 1. 在原基础上 支持 yyyy ...
- js获取控件位置以及不同浏览器中的差别
js获取控件位置(坐标位置)在不同浏览器中的差别. //获取坐标位置 function getpos(e) { var t=e.offsetTop; var l=e.offsetLeft; var h ...
- JS日历控件集合----附效果图、源代码
http://www.cnblogs.com/yank/archive/2008/08/14/1267746.html 在进行开发的过程中,经常需要输入时间,特别是在进行查询.统计的时候,时间限定更为 ...
- 利用js日期控件重构WEB功能
开发需求:网页中的日期部门(注册页面和查询条件)都用js日期控件重写 页面一:更新员工页面 empUpdate.jsp 中增加 onfocus 事件 入职日期:<input id="h ...
- 简洁js日历控件的使用
往Web工程添加纯js日历控件 在网上找到了DatePicker.js(http://www.cnblogs.com/shenyixin/archive/2013/03/11/2954156.html ...
随机推荐
- 通过编写串口助手工具学习MFC过程——(一)工程新建
通过编写串口助手工具学习MFC过程 因为以前也做过几次MFC的编程,每次都是项目完成时,MFC基本操作清楚了,但是过好长时间不再接触MFC的项目,再次做MFC的项目时,又要从头开始熟悉.这次通过做一个 ...
- JUNIT4 GroboUtils多线程测试
阅读更多 利用JUNIT4,GroboUtils进行多线程测试 多线程编程和测试一直是比较难搞的事情,特别是多线程测试.只用充分的测试,才可以发现多线程编码的潜在BUG.下面就介绍一下我自己在测试多线 ...
- Linux部署项目 shell脚本启动 及 Centos7开放指定端口
我们首先要在linux上安装好jdk tomcat mysql 这些基本环境,这些可以在楼主的 Linux入门 里面找到. linux部署spring项目 1. 右击项目,maven ...
- Python 进程之间共享数据(全局变量)
进程之间共享数据(数值型): import multiprocessing def func(num): num.value=10.78 #子进程改变数值的值,主进程跟着改变 if __name__= ...
- nmbd - 向客户端提供构造在IP之上的NetBIOS名字服务的NetBIOS名字服务器
总览 SYNOPSIS nmbd [-D] [-F] [-S] [-a] [-i] [-o] [-h] [-V][-d <debug level>] [-H <lmhosts fil ...
- H5微信授权登录
这里介绍H5微信授权登录,采用了微信公众号授权原理,是oauth2的登录授权方式,简单的来讲,就是用户通过手机微信确认登录之后,微信方会返回一个授权码code给回第三方(接入方),这个授权码code一 ...
- IA学习一
1.配置User 新建用户 a. Configuration 设置用户名以及密码 b. Licensing 给予许可 Client Access License ACD Access License\ ...
- [转]走近0day
首先,需要大家端正一下学习态度-也就是对于破解的态度.每一个有一定修为的软件破解者,也就是CRACKER,都很清楚,我们破解掉软件的序列号,功能限制,时间限制等等东西都不是最终的目的,一个真正的CRA ...
- GUI学习之十四——QKeySequenceEdit学习总结
我们在前面总结了3种文本输入控件,这里有一种新的:QKeySequenceEdit,用作对快捷键的采集.结合其内部的API可以实现对自定义快捷键的设置.这节内容大致看一下就好了,我也不知道实际作用有哪 ...
- jemter简单测试方式
一.简介 Jmeter是一款优秀的开源测试工具, 是每个资深测试工程师,必须掌握的测试工具,熟练使用Jmeter能大大提高工作效率. **开源,他是一款开源的免费软件,使用它你不需要支付任何费用, * ...