radio和checkbox的js勾选使用

Html:
<table>
<tr><th class="w1">党内职务</th><td colspan="3" class="dangneizhiwu"><input id="txt_dangneizhiwu" class="form-control input-lg" type="text" placeholder="" disabled onclick="dangneizhiwuEvent(event)">
<div class="dangneizhiwuBox none" id="dangneizhiwuBox">
<ul>
<li class="noSub"><label><input type="radio" name="dangneizhiwu" id="dangneizhiwu1" value="01">党员</label></li>
<li class="noSub"><label><input type="radio" name="dangneizhiwu" id="dangneizhiwu2" value="02">党支部书记</label></li>
<li class="noSub"><label><input type="radio" name="dangneizhiwu" id="dangneizhiwu3" value="03">党支部副书记</label></li>
<li class="hasSub">
<label class="has">党支委员</label>
<ul class="subUL">
<li><label><input type="checkbox" value="04">组织委员</label></li>
<li><label><input type="checkbox" value="05">宣传委员</label></li>
<li><label><input type="checkbox" value="06">纪律委员</label></li>
<li><label><input type="checkbox" value="07">保密委员</label></li>
<li><label><input type="checkbox" value="08">青年委员</label></li>
<li><label><input type="checkbox" value="09">统战委员</label></li>
<li><label><input type="checkbox" value="10">妇女委员</label></li>
</ul>
</li>
</ul>
</div>
<input type="hidden" id="dangneizhiwuValue" value="" />
</td></tr>
</table>
Js:
function dangneizhiwuEvent(event) {
var $txt_dangneizhiwu = $("#txt_dangneizhiwu");
var $dangneizhiwuValue = $("#dangneizhiwuValue");
var $dangneizhiwuBox = $("#dangneizhiwuBox");
var $radio = $dangneizhiwuBox.find("li.noSub").find("input");
var $checkbox = $dangneizhiwuBox.find("ul.subUL").find("input");
event.stopPropagation();
$dangneizhiwuBox.toggleClass("none");
//初始化
var ary = $txt_dangneizhiwu.val().split(",");
var ary2 = $dangneizhiwuValue.val().split(",");
var len = ary.length;
var len2 = $dangneizhiwuBox.find("input").length;
if (ary[0] == "") {
ary.splice(0, 1);
ary2.splice(0, 1);
}
for (var i = 0; i < len; i++) {
for (var j = 0; j < len; j++) {
if (ary[i] == $dangneizhiwuBox.find("input").eq(j)) {
$dangneizhiwuBox.find("input").eq(j).attr("checked", "checked");
}
}
}
//单选
$radio.off("click").click(function () {
var $this = $(this);
var name = $.trim($this.parent().text());
var val = $this.val();
$checkbox.removeAttr("checked");
ary=[name];
ary2=[val];
$txt_dangneizhiwu.val(ary);
$dangneizhiwuValue.val(ary2);
});
//多选
$checkbox.off("click").click(function () {
var $this = $(this);
var name = $.trim($this.parent().text());
var val = $this.val();
$radio.removeAttr("checked");
if ($this.is(':checked')) {//勾选
//计算勾选个数,点击的时候已算一个勾选数,所以下边if checkLen=1
checkItem = [];
for (k in $checkbox) {
if ($checkbox[k].checked)
checkItem.push($checkbox[k].value);
}
checkLen = checkItem.length;
if (checkLen == 1) {//勾选个数为1时
ary = [name];
ary2 = [val];
} else {
ary.push(name);
ary2.push(val);
}
if (ary.length > 2) {
layer.msg("勾选不能超过两项");
ary.pop();
ary2.pop();
$this.removeAttr("checked");
}
} else {//取消勾选
ary.splice($.inArray(name, ary), 1);
ary2.splice($.inArray(val, ary2), 1);
}
$txt_dangneizhiwu.val(ary);
$dangneizhiwuValue.val(ary2);
});
$(document).click(function () {
$dangneizhiwuBox.addClass("none");
});
$dangneizhiwuBox.click(function (event) {
event.stopPropagation();
});
}
HTML:
<th>党员类别</th><td class="tanchu"><input type="text" class="form-control" id="partyMembersCategory" readonly placeholder="">
<div class="tanchuBox none" id="partyMembersCategoryBox">
<ul class="clearfix">
<li class="all"><label><input type="checkbox" value="00">全选/反选</label></li>
<li><label><input type="checkbox" value="01">正式党员</label></li>
<li><label><input type="checkbox" value="02">预备党员</label></li>
<li><label><input type="checkbox" value="03">已开除党籍</label></li>
</ul>
</div>
<input type="hidden" id="partyMembersCategoryValue" value="" />
</td>
JS:
function popPartyMembersCategory(){
var $input=$("#partyMembersCategory");
var $box=$("#partyMembersCategoryBox");
var $value=$("#partyMembersCategoryValue");
var $all=$box.children("ul").find("li.all").find("input");
var $checkbox=$box.find("li.all").siblings().find("input");
var checkboxLen=$checkbox.length;
var ary=[];
var ary2=[];
if (ary[0] == "") {
ary.splice(0, 1);
ary2.splice(0, 1);
}
$input.click(function(event){
$box.toggleClass("none");
event.stopPropagation();
});
//单选
$checkbox.click(function(){
var $this = $(this);
var name = $.trim($this.parent().text());
var val = $this.val();
if ($this.is(':checked')) {//勾选
ary.push(name);
ary2.push(val);
//如勾完所有CheckBox,自动勾选全选
checkedItem = [];
for (k in $checkbox) {
if ($checkbox[k].checked)
checkedItem.push($checkbox[k].value);
}
checkedLen = checkedItem.length;
if(checkedLen==checkboxLen){
if(!$all.is(':checked')){
$all.prop("checked",true);
}
}
} else {//取消勾选
ary.splice($.inArray(name, ary), 1);
ary2.splice($.inArray(val, ary2), 1);
//取消全选
if($all.is(':checked')){
$all.prop("checked",false);
}
}
$input.val(ary);
$value.val(ary2);
});
//全选
$all.click(function(){
var $this=$(this);
ary=[];
ary2=[];
if ($this.is(':checked')) {
$checkbox.prop("checked",true);
for(k in $checkbox){
if($checkbox[k].checked){
ary.push($checkbox.eq(k).parent().text());
ary2.push($checkbox.eq(k).val());
}
}
}else{
$checkbox.prop("checked",false);
}
$input.val(ary);
$value.val(ary2);
});
$(document).click(function(){
$box.addClass("none");
});
$box.click(function(event){
event.stopPropagation();
});
}
popPartyMembersCategory();
radio和checkbox的js勾选使用的更多相关文章
- js勾选时显示相应内容
使用环境,一.比如用户勾选时显示一些安全方面提示“你真的要自动登录吗?这将使你下次不需要密码即可进入你的个人中心.”二.显示其他预设选项,以方便用户选择输入,比如密保问题设置,当用户不想使用自定义设置 ...
- jquery如何让checkbox如何取消勾选
1.取消勾选 $("checkbox").attr("checked", false); 2.勾选 $("checkbox").attr(& ...
- input控件的checkbox属性自定义勾选框
思路 首先隐藏input默认勾选框 通过绑定label标签,设置label的样式来设置勾选框 效果 在这里插入图片描述代码 # html中input的checkbox定义,使用for循环创建多个 ...
- 获取EasyUI的treegrid的checkbox所有已勾选的数据
EasyUI为TreeGrid的已勾选节点,未勾选节点,只勾选部分子节点的父节点分别添加了三个不同的样式,如下:样式一:tree-checkbox2 有子节点被选中样式二:tree-checkbox1 ...
- Datagridview 中的checkbox 选中或勾选状态失效
1.问题描述,先选中第一行,再取消选择,然后点击部门全选,第一行没有打钩,状态是不选中的状态. 2.分析代码 先选中第一行,单元格的单击事件中 改变选中状态为1,第一行取消选择,单元格的单击事件中 改 ...
- checkbox属性checked="checked"通过js已设置,但是不勾选
1.通过 attr('checked','checked') 来设置checkbox时,重复点击,虽然checked属性设置正确,但是checkbox没有被勾选 ,如下代码:(代码是全选功能) $(' ...
- 用DIV遮罩解决checkbox勾选无效的问题
在前端开发的过程中,遇到一种情况,需要勾选,为了用户的操作便捷就将click事件放到了DIV上.(其中使用了knockout.js) 代码大概如下: <div id="one" ...
- 前端开发:css技巧,如何设置select、radio 、 checkbox 、file这些不可直接设置的样式 。
前言: 都说程序员有三宝:人傻,钱多,死得早.博主身边的程序“猿”一大半应了这三宝,这从侧面说明了一个问题,只有理性是过不好日子的.朋友们应该把工作与生活分开,让生活变得感性,让工作变得理性,两者相提 ...
- JQuery实现表格的全选和反选,以及分页勾选保存(laypage插件分页的使用)
需求: 1.全选与取消全选 2.单个勾选,点击表格单元格中checkbox勾选,也可以在点击行勾选,便与用户操作 3.分页勾选保存 4.固定表头 功能一: 说明:操作全选按钮的同时,遍历每一个tr中的 ...
随机推荐
- 《逆袭团队》第九次团队作业【Beta】Scrum Meeting 1
项目 内容 软件工程 任课教师博客主页链接 作业链接地址 团队作业9:Beta冲刺与团队项目验收 团队名称 逆袭团队 具体目标 (1)掌握软件黑盒测试技术:(2)学会编制软件项目总结PPT.项目验收报 ...
- Non-boring sequences(启发式分治)
题意:一个序列被称作是不无聊的,当且仅当,任意一个连续子区间,存在一个数字只出现了一次,问给定序列是否是不无聊的. 思路:每次找到一个只出现了一次的点,其位置的pos,那么继续分治[L,pos-1], ...
- BM算法【实数模板】
BM递推杜教版是在整数取模的情况下的, 这个可以求解实数系数,但是可能有精度误差. 若一个问题的结论是通过推线性递推式来解,考虑到实际的情况,可以用BM算法的模板,先输入项数再依次输入项,项越多越准确 ...
- SPI总线协议理解
1.什么是SPI: 是摩托罗拉公司设计的一种全双工通信.高速的.同步的串行外部设备通信协议. 2.SPI作用: 用于设备之间的数据交互. 3.SPI由什么构成: 1)MOSI:主设备输出从设备输入线, ...
- 微信小程序底部导航栏部署
在微信小程序开发app.json(app.json它是定义全局页面) 只是用来部署微信底部的图标,最多不能大于五个 "tabBar":{ "selectedColor&q ...
- Selenium ChromeDriver与Chrome版本映射表(更新到v77)
ChromeDriver版本 支持的Chrome版本 v77.0.3865.40 v77 v76.0.3809.126 v76 v75.0.3770.140 v75 v74 v74 v73 v73 v ...
- NET PDB文件到底包含多少秘密?
虽然我希望.NET PDB文件与本地PDB文件处理方式相同,但我们在这件事上没有任何选择,因为事情就是这样.我相信微软的调试器团队多年来听到过很多类似帕特里克的评论.也许我们会在未来的Visual S ...
- 71: libreoj #10151 区间dp
$des$ https://loj.ac/problem/10151 $sol$ 区间dp $f_{i, j}$ 表示区间 $[l, r]$ 合并的最大值 枚举中间点 $k$ $f_{i, j} =m ...
- 洛谷 P2939 [USACO09FEB]改造路Revamping Trails 题解
P2939 [USACO09FEB]改造路Revamping Trails 题目描述 Farmer John dutifully checks on the cows every day. He tr ...
- 洛谷 P1474 货币系统 Money Systems 题解
P1474 货币系统 Money Systems 题目描述 母牛们不但创建了它们自己的政府而且选择了建立了自己的货币系统.由于它们特殊的思考方式,它们对货币的数值感到好奇. 传统地,一个货币系统是由1 ...