js 控制 button 切换

最近做公司的一个抽奖系统,频繁的用到了两个小功能——

  1. 单击实现切换按钮
  2. 一列按钮,一次只能选定一个

个人觉得还是很实用的,在这里把这两个功能的实现代码贴出来。

事先声明,css用的是adminlte和bootstrap原生的,js里面还用到了layer弹窗,layer是非常方便好用的弹窗插件,会在以后的博客中有引申说明。

1 单击切换按钮

抽奖以前,后台的抽奖按钮应该是这个样子的

这里写图片描述

开始之后,就要变成

这里写图片描述

为什么要这么做呢?反正这个控制按钮不是观众能看到的,只有后台控制人员才能看到。

这样做主要是为了防止操作失误。试想,如果控制台的工作人员点了“开始抽奖”,想要结束的时候一不小心点错了,又点到“开始抽奖”了,那就不知道观众在前台会看到什么结果了。。。。因此,让“开始抽奖”与“结束抽奖”互斥存在,是有效防止操作失误的方法。

html代码

button(class="btn btn-info" id="Start" onclick="startLottery()",style="display:block;width:100px;margin-left:2%;") 开始抽奖
button(class="btn btn-danger" id="End" onclick="endLottery()",style="display:none;width:100px;margin-left:2%;") 结束抽奖

js代码

function startLottery() {
    $("#Start").css("display","none");
    $("#End").css("display","block");
}
function endGift() {
    $("#Start").css("display","block");
    $("#End").css("display","none");
}

2 一列按钮,一次只能选定一个

要抽奖的时候,后台工作人员要选中某个奖品,然后再点击“开始抽奖”,在奖品列表的每一行最前面加一个“选中”按钮来实现该功能。那么,如何选中其中一个的时候,其它都是灰色呢?

这里写图片描述

首先说一下奖品列表是怎么来的吧。从数据库中读出所有奖品展示在页面的时候,是在js里面将html拼成一个列表

function refreshPage(){
    $.ajax({
        type: "post",
        url : getContextPath() + "/award/getAllAwards",
        dataType:'json',
        data: {
        },
        success: function(data){
            var awards = data.data;
            var awardHtml = "";
            var iLen = awards.length;
            for(var i = iLen - 1 ; i >=0  ; i--){
                awardHtml+="<tr><td><span id='span"+i+"' style='cursor:pointer;' onclick='selectAward("+i+","+iLen+")' class='label label-default'>"+"选中"+"</span></td><td>"+awards[i].awName+"</td><td>"+awards[i].awDescription+"</td><td>"+
                    awards[i].awUserCount+"</td><td>"+awards[i].awKind+"</td><td><span style='cursor:pointer;' class='label label-info' onclick='confirmUpdateAward("+i+")'>"+"编辑"+"</span></td><td>" +
                    "<span class='label label-danger' style='cursor:pointer;' onclick='comfirmDeleteAward("+awards[i].id+")'>"+"删除"+"</span></td></tr>";
            }
            $("#awardTable").html(awardHtml);
        }
    });
}

前端页面上。只需要有一个

tbody#awardTable

就可以把数据库中取出来的奖品列表循环放到这个 tbody 里面。

注意那个js里面的html拼接,给每一个选中按钮都加了一个id,这个id就是我们控制一次只能有一个奖品被选中的关键。

function selectAward(i,iLen){
    $.ajax({
        type: "post",
        url : getContextPath() + "/config/setCurrentAward",
        dataType:'json',
        data: {
            "awardId":awards[i].id
        },
        success: function(data){
            var selectSuccess = data.data;
            if(selectSuccess){
                var spanId = "span"+i;
                $("#"+spanId).attr("class","label label-success");
                for(var m = iLen - 1 ; m >=0  ; m--){
                    if(m!=i){
                        var otherSpanId = "span"+m;
                        $("#"+otherSpanId).attr("class","label label-default");
                    }
                }
            }else{
                layer.msg('选中失败', {
                    time: 500, //20s后自动关闭
                });
            }
        }
    });
}

最关键的两句代码就是

$("#"+spanId).attr("class","label label-success");
$("#"+otherSpanId).attr("class","label label-default");

说明
如有转载,请务必在开头标明出处:
http://blog.csdn.net/antony9118/article/details/53575214

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值