复选框

CreateTime--2017年6月5日14:04:55
Author:Marydon

五、复选框

  (一)语法

    <input type="checkbox" />  

  (二)点击当前行改变复选框的选中状态

  第一部分:HTML

<table style="width: 100%; border-collapse: collapse;" cellspacing="0" cellpadding="1" border="0" width="100%">
<tbody>
<tr class="TableHeader" align="center">
<td class="TableHeaderCell" style="width: 25px">
<input type="checkbox" id="checkSelect" onclick="javascript:checkSelected('checkSelect','CONSULT_SCHEDULE_ID_TEMP');" />
</td>
<td class="TableHeaderCell" style="width: 35px">项次</td>
<td class="TableHeaderCell" nowrap="nowrap">
星期
</td>
<td class="TableHeaderCell" nowrap="nowrap">
午别
</td>
</tr>
<tr class="TableRow" oldclass="TableRow" align="center"
key="${row.CONSULT_SCHEDULE_ID}"
onclick="javascript:RowSelect(this,'downRow');GetSelect(event,'downRow');"
onmouseover="javascript:if (this.className!='TableRowSelected') this.className='TableRowOver'"
onmouseout="javascript:if (this.className!='TableRowSelected') this.className='TableRow'">
<td class="TableCellIndex" nowrap="nowrap">
<input type="checkbox" name="CONSULT_SCHEDULE_ID_TEMP"
CLOSE_TZ="${row.CLOSE_TZ}" REPLACE_TZ="${row.REPLACE_TZ}"
value="${row.CONSULT_SCHEDULE_ID}"/>
</td>
<td class="TableCellIndex" nowrap="nowrap">
1
<input type="hidden" value="${row.ORG_CODE}"/>
</td>
<td nowrap="nowrap" class="TableCell" align="left">
星期一
</td>
<td nowrap="nowrap" class="TableCell" align="left">
上午
</td>
</tr>
<tr class="TableRow" oldclass="TableRow" align="center"
key="${row.CONSULT_SCHEDULE_ID}"
onclick="javascript:RowSelect(this,'downRow');GetSelect(event,'downRow');"
onmouseover="javascript:if (this.className!='TableRowSelected') this.className='TableRowOver'"
onmouseout="javascript:if (this.className!='TableRowSelected') this.className='TableRow'">
<td class="TableCellIndex" nowrap="nowrap">
<input type="checkbox" name="CONSULT_SCHEDULE_ID_TEMP"
CLOSE_TZ="${row.CLOSE_TZ}" REPLACE_TZ="${row.REPLACE_TZ}"
value="${row.CONSULT_SCHEDULE_ID}"/>
</td>
<td class="TableCellIndex" nowrap="nowrap">
2
<input type="hidden" value="${row.ORG_CODE}"/>
</td>
<td nowrap="nowrap" class="TableCell" align="left">
星期二
</td>
<td nowrap="nowrap" class="TableCell" align="left">
下午
</td>
</tr>
</tbody>
</table>

  第二部分:CSS

.TableHeader {
clear: both;
height: 30px;
line-height: 30px;
} .TableHeaderCell {
height: 100%;
line-height: 21px;
color: #999;
text-indent: 3px;
border: #CECECE 1px solid;
cursor: pointer;
white-space: nowrap;
background-image: url(images/toolbar.gif);
} .TableRow {
height: 21px;
background-color: #ffffff;
} .TableRowOver {
cursor: pointer;
height: 21px;
background-color: #f4f4f4;
} .TableRowSelected {
cursor: pointer;
height: 21px;
background-color: #f4f4f4;
} .TableCell {
height: 25px;
line-height: 25px;
text-indent: 3px;
color: #555;
border-right: #CECECE 1px solid;
border-bottom: #CECECE 1px solid;
cursor: pointer;
} .TableCellIndex {
line-height: 21px;
color: #000;
border: #CECECE 1px solid;
}

  第三部分:JAVASCRIPT

/**
* 点击行、复选框 改变复选框的选中状态
* @param {Object} event
* 必要参数:目标源事件
* @param {string} rowName
* 可(必)要参数:行名称
* 该参数是否必选,取决于调用RowSelect()方法时,是否携带第二个参数,即(同步):
* 若携带第二个参数,都必须携带,并必须保持一致;
* 若不携带,都不携带
* @describe:
* a.改变选中状态分为两种:点击行改变;点击复选框改变;
* b.如何区分两种点击状态?
* checkboxObj==srcObj ? 点击的是复选框 : 点击的是行;
*/
function GetSelect(event,rowName) {
// 获取当前行对象
var rowObj = rowName ? (window[rowName]) : window.row;
// 获取该行tr的第一个td里面的复选框
var checkboxObj = $(rowObj).find(':checkbox')[0];
// 点击事件源对象
var srcObj = event.srcElement ? event.srcElement : event.target;
// 获取当前行所在的table
var tableObj = $(srcObj).parents('table')[0];
// 判断条件
var flag = (checkboxObj != srcObj) ? (!checkboxObj.checked) : checkboxObj.checked; if (flag) {
// 获取当前table有多少行
var rowsLength = tableObj.rows.length;
//
rowsLength = (checkboxObj != srcObj) ? (rowsLength - 2) : (rowsLength - 1);
// 获取页面上有多少个 name=checkboxObj.name 选中的复选框
var checkboxLength = $('[name='+ checkboxObj.name + ']:checked').length;
if (rowsLength == checkboxLength){
// 选中 当前行所在table的第一个复选框
$(tableObj).find(':checkbox')[0].checked = true;
}; } else {
// 取消勾选 当前行所在table的第一个复选框
$(tableObj).find(':checkbox')[0].checked = false;
} // 改变当前行的复选框选中状态:如果没选中,就选中;已经选中,就取消选中
if (checkboxObj != srcObj) {
checkboxObj.checked = !checkboxObj.checked;
} }; /**
* 全选,全不选
* @describe
* 根据主复选框的选中状态同步改变子复选框的选中状态
* @param {string} checkedId
* 必要参数:主复选框的id
* @param {string} checkedTagName
* 必要参数:子复选框的name
*/
function checkSelected(checkedId,checkedTagName) {
// 获取所有的子复选框标签
var checkTags = $('[name='+ checkedTagName +']');
// 获取主复选框的选中状态
var checkedStatus = $('#' + checkedId)[0].checked; for (var i = 0; i < checkTags.length; i++) {
checkTags[i].checked = checkedStatus;
}
}; /**
* 选中当前行
* @param {Object} row
* 必要参数,当前行对象
* @param {string} name
* 可选参数,行名称,
* 当页面只有一个这样的table时(点击该行就选中),调用该方法时可以不传该参数
* 当页面有多个这样的table时,用于区分。
*/
function RowSelect(row, name) {
if(!name) name = "row";
if(window[name]) {
window[name].className = window[name].getAttribute("oldClass");
}
row.className = "TableRowSelected";
window[name] = row;
}

  (三)通过复选框实现批量操作(删除、更改)  

  接着上面

/**
* 停诊
*/
this.updateCloseStatus = function () { // 主键
var CONSULT_SCHEDULE_ID = "";
// 获取页面上已勾选的复选框
var checkTags = $('input[name=CONSULT_SCHEDULE_ID_TEMP]:checked'); if (checkTags.length < 1) {
Dialog.Alert("消息提示", "请选择要修改的行!", null, null, 100);
return;
} // 取值并拼接成字符串
$(checkTags).each(function(i,item) {
if (0 == $(item).attr('CLOSE_TZ')) {
Dialog.Alert("消息提示", "请取消勾选已停诊的行!", null, null, 100);
return;
}
// 字符串拼接:由于数据库中该表的id是字符串,所以需要拼接上引号'
CONSULT_SCHEDULE_ID += "'" + $(item).val() + "'" + ","; }); // 去除最后一个逗号
CONSULT_SCHEDULE_ID = CONSULT_SCHEDULE_ID.slice(0, -1);
// 或CONSULT_SCHEDULE_ID = CONSULT_SCHEDULE_ID.substring(0,CONSULT_SCHEDULE_ID.length - 1); Dialog.Confirm("消息提示", "确定停诊吗?", function() {
var param = "";
// 是否停诊-0:是 1:否
param ="CONSULT_SCHEDULE_ID=" + CONSULT_SCHEDULE_ID + "&CLOSE_TZ=0"; // 发送Ajax请求
var request = new $WebRequest(baseUrl
+ "/telemedicine/remoteCons/schedule/updateCloseStatus.do", param, function(result) {
// 对返回的json数据进行解析
getJsonResult(result, function() {
// 操作成功/异常信息
Dialog.Alert("消息提示", result.msg, function() {
// 刷新页面
object.loadData($get("PageIndex").value);
}, null, 100);
});
});
request.Start();
}, null, null, 100, window);
};

  说明:

    1.批量操作的实现依赖于:复选框的选中状态及Ajax实现;

    2.Dialog对象是封装好的方法;

    3.后台及SQL实现见文章:IBATIS + ORACLE(二)。

      

相关推荐:

 

复选框input:checkbox的更多相关文章

  1. 关于复选框input[type=checkbox]

    关于复选框input[type=checkbox],其实在前面的文章中说过一次,当时主要关注点在设置复选框的状态,利用prop实现,今天继续关注一下复选框. 自己在项目中,遇到一个全选/全不选的需求, ...

  2. 你见过吗?9款超炫的复选框(Checkbox)效果

    复选框(Checkbox)在各个浏览器中的效果不一致,因此很多 Web 开发人员会自己重新设计一套界面和使用体验都更佳的复选框功能.下面就给大家分享9款超炫的复选框(Checkbox)效果,纯 CSS ...

  3. 自动化测试基础篇--Selenium单选框(Radio)复选框(CheckBox)

    摘自:https://www.cnblogs.com/sanzangTst/p/7686602.html 一.什么是单选框.复选框? 二.单选框:radio 三.复选框:checkbox 四.判断是否 ...

  4. 单选按钮(RadioButton)与复选框(CheckBox)的功能与用法

    单选按钮(RadioButton)和复选框(CheckBox).状态开关按钮(ToggleButton)与开关(Switch)是用户界面中最普通的UI组件,他们都继承了Button类,因此都可直接使用 ...

  5. 表单复选框input[type="checkbox"]

    <!DOCTYPE html> <html lang="zh"> <head> <title></title> < ...

  6. jQuery对复选框(checkbox)的全选,全不选,反选等的操作

    效果截图: HTML代码: <body><ul id="list"> <li><label><input type=" ...

  7. Spring MVC-表单(Form)标签-复选框(Checkbox)示例(转载实践)

    以下内容翻译自:https://www.tutorialspoint.com/springmvc/springmvc_checkbox.htm 说明:示例基于Spring MVC 4.1.6. 以下示 ...

  8. 吴裕雄 Bootstrap 前端框架开发——Bootstrap 表单:复选框(Checkbox)和单选框(Radio)

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  9. 原创:纯CSS美化单复选框(checkbox、radio)

    最重要的一点,隐藏选择框本身.不多说了,上代码: <!doctype html> <html> <head> <meta charset="utf- ...

随机推荐

  1. centeros7远程访问mysql5.7

    先启动firewall防火墙: service firewalld start 打开3306端口: firewall-cmd --add-port=/tcp --permanent mysql授权ro ...

  2. C#实现DES加密解密,AES加密解密

    DES算法描述简介: DES是Data Encryption Standard(数据加密标准)的缩写.它是由IBM公司研制的一种加密算法,美国国家标准局于1977年公布把它作为非机要部门使用的数据加密 ...

  3. 如何破解Webstorm 2016.2

    嗯,随着Webstorm2016.2的推出,网上的很多破解方法已经不能用了,不过功夫不负有心人,我终于查到了新的方法, 选择“license server” 输入:http://114.215.133 ...

  4. 高效mysql的习惯(程序员版本)

    高效的mysql 一定要有主键 如果没有主键: 数据多次读写后可能更离散,有更多随机I/O MySQL复制环境中,如果选择RBR模式,没有主键的update需要读全表,导致复制延迟 好的主键特点: 没 ...

  5. Codeforces Round 254 (Div. 2)

    layout: post title: Codeforces Round 254 (Div. 2) author: "luowentaoaa" catalog: true tags ...

  6. Codeforces Round #283 (Div. 2) D. Tennis Game(模拟)

    D. Tennis Game time limit per test 2 seconds memory limit per test 256 megabytes input standard inpu ...

  7. Java 线程 锁

    http://www.blogjava.net/tscfengkui/archive/2010/11/10/337709.html?opt=admin http://hi.baidu.com/xhxz ...

  8. 【分块】【树状数组】bzoj3744 Gty的妹子序列

    离散化,分块. 预处理出:ans[i][j] 第i块到第j块的逆序对数. f[i][j] 第1~i块中大于j的数的个数. g[i][j] 第1~j块中小于j的数的个数. 每次询问时对于整块部分可以O( ...

  9. 微服务之SpringCloud实战(二):SpringCloud Eureka服务治理

    服务治理 SpringCloud Eureka是SpringCloud Netflix微服务套件的一部分,它基于Netflix Eureka做了二次封装,主要完成微服务的服务治理功能,SpringCl ...

  10. UC算法笔试题

    说实话,昨天UC的笔试题基本全是基础,但是太基础,直接导致很多都不能确定了.看来不管找工作还是找实习,一定要复习到位.好在我也一直是抱着打酱油的味道,实习与否不是特别在意,否则真心要鄙视死自己啦. 好 ...