效果预览:

可实现功能:鼠标在滑动条内左右滑动,文本框内分数变动;文本框输入数字,滑动条长度自动改变。

JavaScript代码:

  1. $(function () { scoreFun($("#ScoreBlock")); })
  2.  
  3. function scoreFun(object) {
  4. var defaults = {
  5. SocreWidth: 2, //每一分 的宽度
  6. SocreCount: 100, //a的个数
  7. ScoreSet: 1, //每个a的分数设置
  8. ScoreDiv: "ScoreDiv", //a的容器
  9. ScoreTextID: "txtScore"//接收用的TextBox,根据ID查找
  10. };
  11. options = $.extend({},
  12. defaults);
  13. var socre_div = $("#" + options.ScoreDiv);
  14. var socre_txt = $("#" + options.ScoreTextID);
  15. var socre_set = options.ScoreSet;
  16. var now_cli;
  17. var socre_w = options.SocreWidth;
  18. var len = options.SocreCount;
  19. socre_div.width(socre_w * len);
  20. for (var i = 0; i < len; i++) {
  21. var newSpan = $("<a href='javascript:void(0)' id='SocreA" + i + "'></a>");
  22. newSpan.css({
  23. "left": 0,
  24. "width": socre_w * (i + 1),
  25. "z-index": len - i
  26. });
  27. newSpan.appendTo(socre_div)
  28. }
  29. socre_div.find("a").each(function (index, element) {
  30. //点击滑动条 锁定分数
  31. //$(this).click(function () {
  32. // now_cli = index; //这是锁定分数的关键
  33. // show(index, $(this));
  34. //});
  35. //鼠标在滑动条上悬浮时 锁定分数
  36. $(this).mouseenter(function () {
  37. now_cli = index;//这是锁定分数的关键
  38. show(index, $(this));
  39. });
  40. //鼠标离开时
  41. $(this).mouseleave(function () {
  42. if (now_cli >= 0) {
  43. var scor = socre_set * (parseInt(now_cli) + 1);
  44. socre_div.find("a").removeClass("clibg");
  45. socre_div.find("a").eq(now_cli).addClass("clibg");
  46. var ww = socre_w * (parseInt(now_cli) + 1);
  47. socre_div.find("a").eq(now_cli).css({
  48. "width": ww,
  49. "left": "0"
  50. });
  51. socre_txt.val(scor);
  52. } else {
  53. socre_div.find("a").removeClass("clibg");
  54. socre_txt.val("");
  55. }
  56. })
  57. });
  58. //获取分数
  59. function show(num, obj) {
  60. var n = parseInt(num) + 1;
  61. var lefta = num * socre_w;
  62. var ww = socre_w * n;
  63. var scor = socre_set * n;
  64. object.find("a").removeClass("clibg");
  65. obj.addClass("clibg");
  66. obj.css({
  67. "width": ww,
  68. "left": "0"
  69. });
  70. //传值
  71. socre_txt.val(scor);
  72. }
  73. };
  74.  
  75. //只允许输入数字的验证
  76. function RepNumber(obj) {
  77. var reg = /^[\d]+$/g;
  78. if (!reg.test(obj.value)) {
  79. var txt = obj.value;
  80. txt.replace(/[^0-9]+/, function (val) {//匹配第一次非数字字符
  81. obj.value = val.replace(/\D/g, ""); //将非数字字符替换成""
  82. })
  83. }
  84. //最大值为100
  85. if (obj.value.length > 2) {
  86. obj.value = 100;
  87. }
  88.  
  89. //文本变动时 滑动条自动变动
  90. var scoreA = $("#SocreA" + (obj.value - 1));
  91. $("#ScoreDiv").find("a").removeClass("clibg");
  92. scoreA.addClass("clibg");
  93.  
  94. }

HTML代码:

  1. <div id="ScoreBlock">
  2. <div class="score_b">
  3. </div>
  4. <div id="ScoreDiv" class="score_div" title="左右滑动鼠标调节分数">
  5. </div>
  6. <div class="score_b">
  7. </div>
  8. <p>
  9. 您的评分:
  10.       <input id="txtScore" type="text" onkeyup="javascript:RepNumber(this)" maxlength="3" />

  11. </p>
  12. </div>

CSS样式:

  1. /*评分相关*/
  2. #ScoreBlock{ margin:10px; height:20px;}
  3. #ScoreBlock .score_div,#ScoreBlock p{ float:left;}
  4. #ScoreBlock p{ margin:0px; padding-left:20px; line-height:20px; display:inline-block;}
  5. #ScoreBlock p span{ color:#C00; font-size:16px; font-family:Georgia, "Times New Roman", Times, serif;}
  6. #ScoreBlock .score_b { background:url(../Img/ScoreFull.png);width:2px; height:20px; float:left; position:relative;}
  7. #ScoreBlock .score_div { background:url(../Img/ScoreBorder.png);width:160px; height:20px; position:relative;}
  8. #ScoreBlock .score_div a{ height:20px; display:block; position:absolute;left:;}
  9. #ScoreBlock .score_div a:hover{ background:url(../Img/ScoreFull.png);left:;}
  10. #ScoreBlock .score_div a.clibg{ background:url(../Img/ScoreFull.png);left:;}
  11. #txtScore{color:#CC0000;font-family:Georgia;font-size:16px;font-weight:bold;width:50px;}

使用的图片:

(尺寸大小均为20*20 像素)

ScoreBorder.png

  ( 实际图片没有这个黑色的阴影 - -!)

ScoreFull.png

20160520—JS打分控件的更多相关文章

  1. js树形控件

    js树形控件 ztree http://www.treejs.cn/

  2. Atitit.js图表控件总结

    Atitit.js图表控件总结 1. 为什么要使用图表1 2. 图表分类1 3. 数据可视化的优点1 4. 流行的js图表类库1 5. 参考2 1. 为什么要使用图表 因为要可视化 2. 图表分类 条 ...

  3. js设置控件的隐藏与显示的两种方法

    js设置控件的隐藏与显示,设置控件style的display和visibility属性就可以了,下面有个示例,需要的朋友可以参考下用JavaScript隐藏控件的方法有两种,分别是通过设置控件的sty ...

  4. 简洁JS 日历控件 支持日期和月份选择

    原文出处 以下这个JS日历控件是我的闲暇之余自己编写的,所有的代码全部在IE7/IE8/Firefox下面测试通过, 而且可以解决被iframe层遮盖的问题.现在只提供两种风格(简洁版和古典版)和两种 ...

  5. JS日历控件优化(增加时分秒)

    JS日历控件优化      在今年7月份时候 写了一篇关于 "JS日历控件" 的文章 , 当时只支持 年月日 的日历控件,现在优化如下:      1. 在原基础上 支持 yyyy ...

  6. js获取控件位置以及不同浏览器中的差别

    js获取控件位置(坐标位置)在不同浏览器中的差别. //获取坐标位置 function getpos(e) { var t=e.offsetTop; var l=e.offsetLeft; var h ...

  7. JS日历控件集合----附效果图、源代码

    http://www.cnblogs.com/yank/archive/2008/08/14/1267746.html 在进行开发的过程中,经常需要输入时间,特别是在进行查询.统计的时候,时间限定更为 ...

  8. 利用js日期控件重构WEB功能

    开发需求:网页中的日期部门(注册页面和查询条件)都用js日期控件重写 页面一:更新员工页面 empUpdate.jsp 中增加 onfocus 事件 入职日期:<input id="h ...

  9. 简洁js日历控件的使用

    往Web工程添加纯js日历控件 在网上找到了DatePicker.js(http://www.cnblogs.com/shenyixin/archive/2013/03/11/2954156.html ...

随机推荐

  1. django学习笔记(四)

    1.请求周期 url> 路由 > 函数或类 > 返回字符串或者模板语言? Form表单提交: 提交 -> url > 函数或类中的方法 - .... HttpRespon ...

  2. 常用技术blog

    淘宝核心系统团队 http://csrd.aliapp.com/ 淘宝搜索技术博客 http://www.searchtb.com 淘宝量子恒道官方博客 http://blog.linezing.co ...

  3. qthread线程

    一般调用quit()函数之后可以紧接着调用wait()函数确保线程退出.sleep()等让线程休眠的函数不需要调用,因为Qt中线程是事件驱动机制.但是如果是继承的QTHread类,在run()函数中使 ...

  4. 表达式,数据类型和变量(Expressions,Data Types & Variables)

    (一)表达式: 1)4+4就是表达式,它是程序中最基本的编程指令:表达式包含一个值(4)和操作符号(+),然后就会计算出一个单独的值; 2)一个单独的值没有包含操作符号也可以叫表达式,尽管它只计算它本 ...

  5. Deepin(Ubuntu)安装rpm软件包

    1.首先安装alien和fakeroot这两个软件,alien可以将rpm转换为deb包. 在终端中输入命令 sudo apt-get install alien fakeroot 2.使用alien ...

  6. maven 坐标获取方式

    问题:我们在开发时pom.xml文件中的 <dependencies>     <dependency>         <groupId>org.mybatis& ...

  7. B1016. 部分 A+B

    题目描述 正整数A的"D(为1位整数)部分"定义由A中所有D组成的新整数P,例如给定A=3862767,D=6,则A的"6部分" P是66,因为A中有2个6,现 ...

  8. cron常用表达式

    原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11905247.html 推荐一个cron表达式生成的网站:https://www.freeformat ...

  9. CSS3——PC以及移动端页面适配方法(响应布局)

    响应布局就是不同宽度应用不同的样式块,每个样式块对应的是该宽度下的布局方式,从而使页面适应不同宽度. <!DOCTYPE html> <html lang="en" ...

  10. mysql Alias操作符 语法

    mysql Alias操作符 语法 作用:为列名称和表名称指定别名 大理石构件 语法:SELECT column_name(s) FROM table_name AS alias_name mysql ...