1. 程式人生 > >複選框全選、單選以及變灰不能選

複選框全選、單選以及變灰不能選

使用jquery和html做一個基礎性的表單效果,記錄一下:

<%@ page contentType="text/html;charset=UTF-8" %>
<%@ include file="/WEB-INF/views/include/taglib.jsp"%>
<html>
<head>
	<title>預約資訊管理</title>
	<meta name="decorator" content="default"/>
	<script type="text/javascript">
		
        function detail(id){
		    if($("#"+id).attr('hidden')=='hidden'){
                $("#"+id).fadeIn(1000);
                $("#"+id).removeAttrs("hidden");
			}else{
                $("#"+id).fadeOut(1000);
                $("#"+id).attr("hidden","hidden");
			}
		}

        $(function() {
            // :checkbox表示 獲取到表格body的所有checkbox
            var $tbCheckboxes = $("#j_tb").find(":checkbox:not(:disabled)");

            // 全選和全不選
            $("#j_cbAll").click(function () {
                // 使用prop這個方法來 判斷 這個checkbox有沒有被選中
                var isChecked = $(this).prop("checked");
                //alert(isChecked);
                if (isChecked) {
                    // 讓表格body裡面的所有checkbox選中
                    // :checkbox 這個選擇器會幫我們選擇到所有的checkbox
                    $tbCheckboxes.prop("checked", true);
                } else {
                    // 讓表格body裡面的所有checkbox不選中
                    $tbCheckboxes.prop("checked", false);
                }
            });


            // 單選控制全選checkbox選中或者不選中
            $tbCheckboxes.click(function () {
                // 獲取到所有被選中的checkbox的個數跟所有的checkbox個數 對比
                // :checked表示:獲取到body中所有被選中的checkbox
                // length屬性表示 獲取到元素的長度
                var checkedLength = $("#j_tb").find(":checked").length;
                // 獲取到所有的checkbox的長度
                var allCheckboxLength = $tbCheckboxes.length;
                //alert(checkedLength);
                // 如果相等,就讓全選按鈕選中
                if (checkedLength == allCheckboxLength) {
                    $("#j_cbAll").prop("checked", true);
                } else {
                    // 否則,讓全選按鈕不選中
                    $("#j_cbAll").prop("checked", false);
                }
            });

            $('[type="checkbox"]').click(function () {
                if(this.checked){
                    $('[name="cancel"]').fadeIn(1000);
                    $('[name="cancel"]').removeAttrs("hidden");
                }
                if($('[type="checkbox"]:checked').size()==0){
                    $('[name="cancel"]').fadeOut(1000);
                    $('[name="cancel"]').attr("hidden","hidden");
				}
            });

        });
	</script>
</head>
<body>
	<ul class="nav nav-tabs">
		<li class="active"><a href="${ctx}/bespeakweb/bespeakBookingweb/list">預約資訊列表</a></li>
		<%--<shiro:hasPermission name="bespeakweb:bespeakBooking:edit"><li><a href="${ctx}/bespeakweb/bespeakBooking/form">預約資訊新增</a></li></shiro:hasPermission>--%>
	</ul>
	<form:form id="searchForm" modelAttribute="booking" action="${ctx}/bespeakweb/bespeakBookingweb/list" method="post" class="breadcrumb form-search">
		<input id="pageNo" name="pageNo" type="hidden" value="${page.pageNo}"/>
		<input id="pageSize" name="pageSize" type="hidden" value="${page.pageSize}"/>
		<ul class="ul-form">
			<li><label>預約日期:</label>
					${booking.bookingDate}
				<input name="bookingDate" type="text" readonly="readonly" maxlength="20" class="input-medium Wdate"
					   value="${booking.bookingDate}"
					   onclick="WdatePicker({dateFmt:'yyyy-MM-dd',isShowClear:true});"/>
			</li>
			<li><label style="width: 92px;">預約開始時間:</label>
				<input name="bookingStartTime" type="text" readonly="readonly" id="startDate" maxlength="20" class="input-medium Wdate"
					   value="${booking.bookingStartTime}"
					   onclick="WdatePicker({dateFmt:'HH:mm',isShowClear:false,maxDate:'#F{$dp.$D(\'endDate\')}'});"/>
			</li>
			<li><label style="width: 92px;">預約結束時間:</label>
				<input name="bookingEndTime" type="text" readonly="readonly" id="endDate" maxlength="20" class="input-medium Wdate"
					   value="${booking.bookingEndTime}"
					   onclick="WdatePicker({dateFmt:'HH:mm',isShowClear:false,minDate:'#F{$dp.$D(\'startDate\')}'});"/>
			</li>
			<li class="clearfix"></li>
		</ul><br>
		<ul class="ul-form" >

			<li><label>市民姓名:</label>
				<form:input  path="czName" htmlEscape="false" maxlength="30" class="input-medium"/>
			</li>
			<li style="padding-left: 12px"><label>身份證號:</label>
				<form:input path="idCard" htmlEscape="false" maxlength="30" class="input-medium"/>
			</li><li><label >預約狀態:</label>
			<li style="padding-left: 18px">
			<select name="bookingState" id="selectState" style="width: 92px;">
				<option value="">全 部</option>
				<option value="0"  <c:if test="${booking.bookingState=='0'}">selected</c:if>>未處理</option>
				<option value="1" <c:if test="${booking.bookingState=='1'}">selected</c:if>>已處理</option>
				<option value="2" <c:if test="${booking.bookingState=='2'}">selected</c:if>>已取消</option>
			</select>
			</li>
		</li>
			<li class="btns"><input id="btnSubmit" class="btn btn-primary" type="submit" value="查詢"/></li>
			<li class="clearfix"></li>
		</ul>
	</form:form>
	<sys:message content="${message}"/>

	<form action="${ctx}/bespeakweb/bespeakBookingweb/save" class="breadcrumb form-search">
		<ul class="ul-form" name="cancel" hidden="true">
			<li><input type="text" class="input-medium"  placeholder="請填寫取消事由" /><span class="help-inline"><font color="red">*</font> </span></li>

			<li class="btns"><input type="submit" class="btn btn-primary"  value="全部取消" /></li>
			<li class="clearfix"></li>
		</ul>
		<br>
		<table id="contentTable" class="table table-striped table-bordered table-condensed">
		<thead>
			<tr>
				<th><input type="checkbox" id="j_cbAll" />全選</th>
				<th>預約日期</th>
				<th>預約時間</th>
				<th>預約事由</th>
				<th>預約狀態</th>
				<th>市民電話</th>
				<th>取消事由</th>
				<th>詳細資訊</th>
				<shiro:hasPermission name="bespeakweb:bespeakBooking:edit"><th>操作</th></shiro:hasPermission>
			</tr>
		</thead>
		<tbody id="j_tb">
		<c:forEach items="${page.list}" var="bespeakBooking" varStatus="s">

			<tr>
				<td>
					<c:choose>
						<c:when test="${bespeakBooking.bookingState=='0'}">
							<input type="checkbox" name="id"  value="${bespeakBooking.id}">
						</c:when>
						<c:otherwise>
							<input type="checkbox" name="id" disabled=true value="${bespeakBooking.id}">
						</c:otherwise>
					</c:choose>
				</td>
				<td>
						${bespeakBooking.bookingDate}
				</td>
				<td>
					${bespeakBooking.bookingTime}
				</td>
				<td>
					${bespeakBooking.bookingInfo}
				</td>

				<td>
						<c:choose>
							<c:when test="${bespeakBooking.bookingState==0}">未處理</c:when>
							<c:when test="${bespeakBooking.bookingState==1}">已處理</c:when>
							<c:otherwise>已取消</c:otherwise>
						</c:choose>
				</td>
				<td>
						${bespeakBooking.bookingTel}
				</td>

				<td>
						${bespeakBooking.cancelInfo}
				</td>
				<td>
					<%--<a href="${ctx}/bespeakweb/bespeakBookingweb/detail?id=${bespeakBooking.id}">詳情</a>--%>
					<a href="javascript:void(0);" onclick="detail('${bespeakBooking.id}')" >詳情</a>

				</td>
				<shiro:hasPermission name="bespeakweb:bespeakBooking:edit"><td>
    				<%--<a href="${ctx}/bespeakweb/bespeakBooking/form?id=${bespeakBooking.id}">修改</a>--%>
					<c:choose>
						<c:when test="${bespeakBooking.bookingState=='0'}">
							<a href="${ctx}/bespeakweb/bespeakBookingweb/cancel?id=${bespeakBooking.id}" id="testHref" onclick="return confirmx('確認要取消該預約資訊嗎?', this.href)">取消</a>
						</c:when>
						<c:otherwise>
							取消
						</c:otherwise>
					</c:choose>
				</td></shiro:hasPermission>
			</tr>
			<tr hidden="true" id="${bespeakBooking.id}">
				<td colspan="9" style="text-align: center;">
					<c:choose>
						<c:when test="${bespeakBooking.count==1}">
							<iframe src="${ctx}/bespeakweb/bespeakBookingweb/detail?id=${bespeakBooking.id}" scrolling="no" frameborder="0" style="width: 100%;height: ${bespeakBooking.count*40}%" ></iframe>
						</c:when>
						<c:otherwise>
							<iframe src="${ctx}/bespeakweb/bespeakBookingweb/detail?id=${bespeakBooking.id}" scrolling="no" frameborder="0" style="width: 100%;height: ${bespeakBooking.count*20+20}%" ></iframe>
						</c:otherwise>
					</c:choose>
				</td>
			</tr>
		</c:forEach>
		</tbody>
	</table>
</form>
	<div class="pagination">${page}</div>
</body>
</html>

這一頁包含了幾個基礎性的頁面效果:

1、表格中新增複選框,並對其進行全選與反選,以及單獨選。

(1)設定某些行數因為特殊操作不能被選,置灰

(2)點選全選,置灰的不能被選,並且將隱藏的form展示:

(3)再次點選全選,即全部取消被選,並且表單隱藏恢復到(1)

(4)單選操作,單獨選中和普通複選框選擇無差別