本帖最后由 rikioy 于 2011-9-30 14:07 编辑
最近做了一个功能,分类打分。再次分享一下。因为涉及到很多地方,所以你拿去肯定不能直接用。明白了原理,然后再做修改。这个功能是discuzx中摘出来的。
先来HTML代码部分
6项打分,这个是html代码部分,在discuzx中是用函数循环输出这些的。
然后是CSS部分
- .star_rating, .star_rating a:hover, .star_rating a:active, .star_rating a:focus, .star_rating .current_rating {background: url("images/star.gif") left -1000px repeat-x;}
- .star_rating {background-position:left top;height: 14px;list-style: none outside none;margin: 0;overflow: hidden;padding: 0;position: relative;width:75px;margin-left:3px;}
- .star_rating li {display: inline;display: block;float: left;}
- .star_rating a, .star_rating .current_rating { border: medium none;height: 14px;left: 0;line-height: 14px; outline: medium none; overflow: hidden; position: absolute; text-indent: -1000em; top: 0;}
- .star_rating a:hover, .star_rating a:active, .star_rating a:focus { background-position: left bottom;}
- .star_rating a.one_star {width: 15px; z-index: 6;}
- .star_rating a.two_star {width: 30px;z-index: 5;}
- .star_rating a.three_star { width: 45px;z-index: 4;}
- .star_rating a.four_star { width: 60px; z-index: 3;}
- .star_rating a.five_star { width: 75px; z-index: 2;}
- .star_rating .current_rating {background-position: left bottom;z-index: 1;}
复制代码
投票的部分是通过绑定 onclick事件进行的
- <script type="text/javascript">
- var rating_group = new Array();
- var rating_types = new Array();
- rating_types[0] = 'traffic';
- rating_types[1] = 'environment';
- rating_types[2] = 'design';
- rating_types[3] = 'facilities';
- rating_types[4] = 'developer';
- rating_types[5] = 'management';
- function rating(obj){
- if( $_G['uid'] == 0){
- showDialog('{lang house_rating_login}','notice');
- return false;
- }
- var score = obj.id.substr(0,1);
- var type = obj.id.substr(2);
- var rating = score*15;
- $(type+'_current_rating').style.width = rating+'px';
- rating_group[type] = score;
- var flag = true;
- for( var i=0; i<rating_types.length; i++) {
- if( !(rating_types[i] in rating_group)) {
- flag = false;
- }
- }
- if(flag){
- var ratingstr = "";
- ratingstr += "HASH:{FORMHASH}";
- for( type in rating_group){
- ratingstr += "," + type + ":" + rating_group[type];
- }
- ajaxget('house.php?mod=misc&ac=rating&hid=$tid&ratingstr='+ratingstr, null, null, '', '', function() {
- showDialog('{lang house_rating_success}','notice', '', '', '', '', '', '', '', 2);
- window.location.reload();
- });
- rating_group = new Array();
- }
- }
- </script>
复制代码 js中做了判断,只有6项都进行评分后才会提交分数
提交分数是用dx中的ajaxget函数进行的。
- ajaxget('house.php?mod=misc&ac=rating&hid=$tid&ratingstr='+ratingstr, null, null, '', '', function() {
- showDialog('{lang house_rating_success}','notice', '', '', '', '', '', '', '', 2);
- window.location.reload();
- });
复制代码 后台处理部分就属于php常规的一些操作了。就写到这吧。
效果如图
用到的星星图片
|