js实现简单的星级选择器提交效果适用于评论等

所属分类: 网络编程 / JavaScript 阅读数: 1948
收藏 0 赞 0 分享
星级选择器,提交代码适用于评论等

没有用到js库,就是单独的js代码
 
复制代码 代码如下:

<form action="" method="get">
<div id="star_level" star_width="14">
<p>服务</p>
<ul class="star_rating">
<li style="display:none;">
<input type="text" name="serve" value="" />
</li>
<li class="current_rating">default level</li>
<li><a href="#" title="1 of 5 stars" class="one_star">1</a></li>
<li><a href="#" title="2 of 5 stars" class="two_stars">2</a></li>
<li><a href="#" title="3 of 5 stars" class="three_stars">3</a></li>
<li><a href="#" title="4 of 5 stars" class="four_stars">4</a></li>
<li><a href="#" title="5 of 5 stars" class="five_stars">5</a></li>
</ul>
<p>价格</p>
<ul class="star_rating">
<li style="display:none;">
<input type="text" name="price" value="" title="这里设置为2的话,表示默认2颗星亮。" />
</li>
<li class="current_rating">default level</li>
<li><a href="#" title="1 of 5 stars" class="one_star">1</a></li>
<li><a href="#" title="2 of 5 stars" class="two_stars">2</a></li>
<li><a href="#" title="3 of 5 stars" class="three_stars">3</a></li>
<li><a href="#" title="4 of 5 stars" class="four_stars">4</a></li>
<li><a href="#" title="5 of 5 stars" class="five_stars">5</a></li>
</ul>
<p>质量</p>
<ul class="star_rating">
<li style="display:none;">
<input type="text" name="mass" value="" />
</li>
<li class="current_rating">default level</li>
<li><a href="#" title="1 of 5 stars" class="one_star">1</a></li>
<li><a href="#" title="2 of 5 stars" class="two_stars">2</a></li>
<li><a href="#" title="3 of 5 stars" class="three_stars">3</a></li>
<li><a href="#" title="4 of 5 stars" class="four_stars">4</a></li>
<li><a href="#" title="5 of 5 stars" class="five_stars">5</a></li>
</ul>
</div>
<input type="submit" value="提交后请看地址栏的参数" />
</form>

复制代码 代码如下:

<script type="text/javascript">
<!--
function __start(){
var initialize_width=0;
if(document.getElelmentById){return false};
if(document.getElementsByTagName==null){return false;}
var startLevelObj=document.getElementById("star_level")
if(startLevelObj==null){return false;}
initialize_width=parseInt(startLevelObj.getAttribute("star_width"),10);
if(isNaN(initialize_width) || initialize_width==0){return false;}
var ul_obj=startLevelObj.getElementsByTagName("ul");
if(ul_obj.length<1){return false;}
var length=ul_obj.length;
var li_length=0;
var a_length=0;
var li_obj=null;
var a_obj=null;
var defaultInputObj=null;
var defaultValue=null;
for(var i=0;i<length;i++){
li_obj=ul_obj[i].getElementsByTagName("li");
li_length=li_obj.length;
if(li_length<0){return false;}
//获取默认值
defaultInputObj=li_obj[0].getElementsByTagName("input");if(!defaultInputObj){return false;}
defaultValue=parseInt(defaultInputObj[0].value,10);
if(!isNaN(defaultValue) && defaultValue!=0){
//alert("有初始值!");
//li_obj[1].style.width=initialize_width*defaultValue+"px";
//defaultValue=0;
}
for(var j=0;j<li_length;j++){
a_obj=li_obj[j].getElementsByTagName("a");
if(a_obj.length<1){continue;}
if(a_obj[0].className.indexOf("star")>0){
a_obj[0].onclick=function(){
return give_value(this);
}
a_obj[0].onfocus=function(){
this.blur();
}
}
}
}
}
function give_value(obj){
var status=true;
var parent_obj=obj.parentNode;
var i=0;
while(status){
i++;
if(parent_obj.nodeName=="UL"){break;}
parent_objparent_obj=parent_obj.parentNode;
if(i>1000){break;}//防止找不到ul发生死循环
}
var hidden_input=parent_obj.getElementsByTagName("input")[0];
if(hidden_input.length<1){/*alert("sorry?\nprogram error!")*/;}
var txt=obj.firstChild.nodeValue;//确保不能存在空格哦,因为这里用的firstChild
if(isNaN(parseInt(txt,10))){/*alert('level error!')*/;return false;}
hidden_input.setAttribute("value",txt.toString());
//固定选中状态,先找到初始化颜色那个li
var current_li=parent_obj.getElementsByTagName("li");
var length=current_li.length;
var ok_li_obj=null;
for(var i=0;i<length;i++){
if(current_li[i].className.indexOf("current_rating")>=0){
ok_li_obj=current_li[i];break;//找到
}
}
__current_width=txt*14;
ok_li_obj.style.width=__current_width+"px";
return false;
}
__start();
//-->
</script>

复制代码 代码如下:

body{font-size:12px;}
ul{padding:0;margin:0;}
/*star.css*/
.star_rating {list-style:none;margin:-1px 0 0 -1px; padding:0; width:70px; height:12px; position:relative; background:url(rating_stars.gif) 0 0 repeat-x; overflow:hidden;font-size:0;}
.star_rating li{padding:0;margin:0;float:left;}
.star_rating li a{display:block;width:14px;height:12px;text-decoration:none;text-indent:-9000px;z-index:20;position:absolute;padding:0;margin:0;}
.star_rating li a:hover{background:url(rating_stars.gif) 0 12px;z-index:2;left:0;}
.star_rating a.one_star{left:0;}
.star_rating a.one_star:hover{width:14px;}
.star_rating a.two_stars{left:14px;}
.star_rating a.two_stars:hover{width:28px;}
.star_rating a.three_stars{left:28px;}
.star_rating a.three_stars:hover{width:42px;}
.star_rating a.four_stars{left:42px;}
.star_rating a.four_stars:hover{width:56px;}
.star_rating a.five_stars{left:56px;}
.star_rating a.five_stars:hover{width:70px;}
.star_rating li.current_rating{background:url(rating_stars.gif) 0 24px;position:absolute;height:12px;display:block;text-indent:-9000px;z-index:1;left:0;}
/*end star.css*/
#star_level{margin:0 0 20px 20px;}
#star_level p{margin:20px 0 5px 0;}
更多精彩内容其他人还在看

jQuery LigerUI 使用教程表格篇(1)

ligerGrid是ligerui系列插件的核心控件,用户可以快速地创建一个美观,而且功能强大的表格,支持排序、分页、多表头、固定列等等
收藏 0 赞 0 分享

JavaScript中常用的运算符小结

JavaScript中常用的运算符小结,需要的朋友可以参考下。
收藏 0 赞 0 分享

深入理解JavaScript系列(13) This? Yes,this!

在这篇文章里,我们将讨论跟执行上下文直接相关的更多细节。讨论的主题就是this关键字。实践证明,这个主题很难,在不同执行上下文中this的确定经常会发生问题
收藏 0 赞 0 分享

javascript (用setTimeout而非setInterval)

javascript (用setTimeout而非setInterval)如果用setInterval 可能出现 下次调用会在前一次调用前调用
收藏 0 赞 0 分享

JavaScript中两个感叹号的作用说明

用两个感叹号的作用就在于,如果明确设置了o中flag的值(非null/undefined/0""/等值),自然test就会取跟o.flag一样的值;如果没有设置,test就会默认为false,而不是null或undefined
收藏 0 赞 0 分享

javascript写的简单的计算器,内容很多,方法实用,推荐

最近用javascript写了一个简单的计算器,自己测试感觉还好,代码都给了注释,非常不错,推荐大家学习。
收藏 0 赞 0 分享

js的表单操作 简单计算器

javascript写的简单的加减乘除计算器,里面涉及到一些方法还是很实用的哦,新手不要错过
收藏 0 赞 0 分享

Jquery中删除元素的实现代码

empty用来删除指定元素的子元素,remove用来删除元素,或者设定细化条件执行删除
收藏 0 赞 0 分享

javaScript 利用闭包模拟对象的私有属性

JavaScript缺少块级作用域,没有private修饰符,但它具有函数作用域。作用域的好处是内部函数可以访问它们的外部函数的参数和变量(除了this和argument
收藏 0 赞 0 分享

为JavaScript类型增加方法的实现代码(增加功能)

大家在js开发过程中有些功能已经满足不了我们的需求,或没有我们需要的功能,那么我们就可以自己扩展下,个性化js
收藏 0 赞 0 分享
查看更多