评分控件

评分是WEB经常使用到功能,网上有很多,这里整理总结出来,做成一个控件方便日后直接参考;

//---------about comment score------------
function createCmtScoreUI() {
    var strHTML = '';
    strHTML += '<div id="cmtScoreCon" style="display:none;">';
    strHTML += '<div id="cmtStart">';
    strHTML += '<ul>';
    strHTML += '<li><a title="1" href="javascript:;"></a></li>';
    strHTML += '<li><a title="2" href="javascript:;"></a></li>';
    strHTML += '<li><a title="3" href="javascript:;"></a></li>'; // class="on"
    strHTML += '<li><a title="4" href="javascript:;"></a></li>';
    strHTML += '<li><a title="5" href="javascript:;"></a></li>';
    strHTML += '</ul>';
    strHTML += '</div>';
    strHTML += '<div id="tipArrow"></div>';
    strHTML += '</div>';
    return strHTML;
};
function setScore(score) {
    var oSC = document.getElementById("cmtStart");
    var olis = oSC.getElementsByTagName("LI");
    for (var i = 0; i < score; i++) {
        olis[i].className = (i < score ? 'on' : ''); //li默认是一种状态,鼠标移上去又是一种当前指示状态,要给li元素合适样式,即背景分两种图,一种默认的,一种当前状态的,两个图片必须能完全重合
    }
}

function activeScoreEvent() { 
    if (initScoreResult >= 3) {
        initScoreEvent();
    } else {
        setTimeout(function () { activeScoreEvent(); }, 500);
    }
}
function initScoreEvent() {
    $('body').append(createCmtScoreUI());
    $("img[src*='btn_start']").mouseover(function () { //执行触发源,即src含有btn_start的img对象
        curO2C = $(this);		
        var left = $(this).offset().left;
        var top = $(this).offset().top;
        var refOH = $(this).height();
        var conw = $('#cmtScoreCon').width();
        var conh = $('#cmtScoreCon').height();
        left = left - Math.ceil(conw * 3 / 4) - 2;
        top = top - conh - refOH;
        $('#cmtScoreCon').css({ 'left': left, 'top': top, 'position': 'absolute', 'border': '0px solid red' });
        $('#cmtScoreCon').show();
    });
    $("img[src*='btn_start']").mouseout(function () {
        $('#cmtScoreCon').hide();
    });
    $('#cmtScoreCon').hover(function () {
        $('#cmtScoreCon').show();
    }, function () {
        $('#cmtScoreCon').hide();
    });
    $('#cmtStart li').mouseover(function () {
        var startList = $('#cmtStart li');
        var x = startList.index($(this));
        setScore(x + 1);
    });
    $('#cmtStart li').mouseout(function () {
        $('#cmtStart li').removeClass('on');
    });
    $('#cmtStart li').click(function () {
        var startList = $('#cmtStart li');
        var score = startList.index($(this));
        score += 1;
        var opNode = curO2C.parent();
        var objectType = opNode.attr('objectType');
        var objectId = opNode.attr('objectId');                
        var goURL = '/Home/commentScore';  
        var params = { 'Score': score, 'ObjectType': objectType, 'ObjectId': objectId };        
        $.post(goURL, params, function (data) {            
            //ok= comment success, commented= already commented, other=go wrong
            var msg = '';
			if ('ok' == $.trim(data.cmtResult.toLowerCase())) {
				var scoreOCon = curO2C.parent().prev();
				scoreOCon.html('评分:' + data.score);	
                alert('成功评分');
            } else if ('commented' == $.trim(data.cmtResult.toLowerCase())) {
                alert('您已经评过分了,不能再评');
            } else {
                //do nothing yet now
            }
        }, 'json');
    });
}

当然进行评分时,还需要提供各个必要的参数,这个可以把相关参数数据作为某个DOM的某些属性附加到DOM元素上,也可以做其他设计[这里是附加到父节点上];后台评分时先判断是否已经评分(根据设计看是否需要验证),未评分的进行评分,然后返回(可以返回评分后的结果);

必须在页面数据DOM加载完成后,才进行各个触发评分的对象初始化评分功能。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值