全选与反选添加

<!DOCTYPE html>
<html>

<head>
<meta charset="utf-8" />
<script src="js/angular.min.js" type="text/javascript" charset="utf-8"></script>
<script src="js/jquery.js" type="text/javascript" charset="utf-8"></script>
<title>月考</title>

<style type="text/css">
/*各行变色*/

tr:nth-child(odd) {
background: gainsboro;
}

tr:nth-child(even) {
background: white;
}
/*提示信息红色*/

span {
color: red;
}
</style>

</head>

<body ng-app="myApp" ng-controller="myCtrl">

<input type="text" placeholder="根据名字查询" ng-model="bname" />
<select ng-model="v">
<option>--排序--</option>
<option value="gid">编号正序</option>
<option value="-gid">编号倒序</option>
<option value="gcount">小计正序</option>
<option value="-gcount">小计倒序</option>
</select>

<input type="button" value="添加" ng-click="add()" />

<input type="button" value="批量删除" ng-click="deleAll()" />

<table border="1px" cellspacing="0px" cellpadding="0px">
<tr style="background: gray;">
<td><input type="checkbox" ng-click="xuan()"/>全选/反选</td>
<td>商品编号</td>
<td>商品名称</td>
<td>商品数量</td>
<td>商品单价</td>
<td>商品小计</td>
<td>操作</td>
</tr>
<tr ng-repeat="b in books|filter:bname|orderBy:v">
<td><input type="checkbox" /></td>
<td>{{b.gid}}</td>
<td>{{b.gname}}</td>
<td>{{b.gnum}}</td>
<td>{{b.gprice|currency:"¥"}}</td>
<td>{{b.gcount|currency:"¥"}}</td>
<td><input type="button" value="删除" ng-click="dele(b.gid)" /></td>
</tr>
</table>
<hr />

<div ng-show="isShow">
商品编号:<input type="text" placeholder="编号" ng-model="t_id" />
<span ng-show="id_tip">
*商品编号不能为空
</span>
<br> 商品名称:
<input type="text" placeholder="名称" ng-model="t_name" />
<span ng-show="name_tip">
*商品名称不能为空
</span>
<br> 商品数量:
<input type="text" placeholder="数量" ng-model="t_num" />
<span ng-show="num_tip">
*商品数量不能为空
</span>
<br> 商品单价:
<input type="text" placeholder="单价" ng-model="t_price" />
<span ng-show="price_tip">
*商品单价不能为空
</span>
<br>
<input type="button" value="保存" ng-click="save()" />
</div>

<script type="text/javascript">
var mo = angular.module("myApp", []);
mo.controller("myCtrl", function($scope, $http) {
//定义一个数组
$scope.books = [];
//进行网络请求
$http.get("data.json").then(function(req) {

$scope.books = req.data;

});
//單個刪除
$scope.dele = function(gid) {
//便利數組
var ok = confirm("确定要删除?");

if(ok) {
for(var i = 0; i < $scope.books.length; i++) {
var b = $scope.books[i];
if(b.gid == gid) {
$scope.books.splice(i, 1);
break
}
}
}

}
//批量删除
$scope.deleAll = function() {
//获取所有的选中的复选框

var cbs = $("[type=checkbox]:checked");

if(cbs.length == 0) {
alert("至少选一个");
return;
}

for(var i = 0; i < cbs.length; i++) {
var cb = cbs[i];
//根据复习框获取相应的gid
var tr = cb.parentNode.parentNode;
var td2 = tr.cells[1];
var gid = td2.innerHTML.trim(); //trim去掉左右的空格
for(var j = 0; j < $scope.books.length; j++) {
var b = $scope.books[j];
if(b.gid == gid) {
$scope.books.splice(j, 1);
break
}
}
}

}
//上面的按钮
$scope.add = function() {

$scope.isShow = true;

}
//点击保存按钮
$scope.save = function() {
//验证
var id = $scope.t_id;
console.log(id);
if(id == undefined) {
$scope.id_tip = true;
return;
} else {
$scope.id_tip = false;
}

var name = $scope.t_name;
if(name == undefined) {
$scope.name_tip = true;
return;
} else {
$scope.name_tip = false;
}

var num = $scope.t_num;
console.log(num);
if(num == undefined || num < 0) {
$scope.num_tip = true;
return;
} else {
$scope.num_tip = false;
}

var price = $scope.t_price;

if(price == undefined || price <= 0) {

$scope.price_tip = true;
return;
} else {
$scope.price_tip = false;
}
//当验证成共之后,将数据放入对象,将对象添加到数组
var obj = {
"gid": id,
"gname": name,
"gnum": num,
"gprice": price,
"gcount": (num * 1) * (price * 1)
};
// 注意:数量和价格,有时候需要转成数字。
$scope.books.push(obj);

}
//反选
$scope.xuan = function(){

var cbs = $("[type=checkbox]");
for (var i = 1;i<cbs.length;i++) {
var cb = cbs[i];
cb.checked = !cb.checked;
}
}
});
</script>
</body>

</html>

原文地址:https://www.cnblogs.com/xiaxinxin/p/9252126.html

时间: 2024-10-21 10:33:26

全选与反选添加的相关文章

JavaScript内容梳理 示例之模态对话框 示例之全选和反选以及取消 示例之后台管理左侧菜单

1 <!DOCTYPE html> 2 <!--示例之模态对话框--> 3 <html lang="en"> 4 <head> 5 <meta charset="UTF-8"> 6 <title>Title</title> 7 <style> 8 .hide{ 9 display: none; 10 } 11 .c1{ 12 position: fixed; 13 lef

PHP基础班初学心得:用JQ实现表单的全选、反选、取消和删除功能

摘要: 本人刚参加PHP基础班培训,由于之前毫无基础,分享的心得可能不规范,方法也许也"旁门左道",不能保证质量,只作自己总结学习,也希望能帮助到同样是初学者的朋友们,共同进步. 在这里分享一下我们基础班学员遇到的一些疑点和我的分析.PS:分析不一定正确,希望同行指教 前一段时间笔者重感冒了,身体不舒服,还请了一天假没去上实操课,播客也没有来得及和大家分享.今天感冒已经好得差不多啦,就剩下一点留鼻涕喉咙痒而已,刚好今天是休息天不用上课,这里打铁趁热,赶紧给大家分享一下昨天学到的用JQ实

Android 实现自定义多级树控件和全选与反选的效果

博文开始之前,首先要感谢大牛:(lmj623565791),本博文是在其博文http://blog.csdn.net/lmj623565791/article/details/40212367基础上进一步的修改而来. 本博文主要是利用ListView实现多级树控件,并通过CheckBox来对各节点的全选与反选的功能,首先来看一下效果: 对于多级树的显示其实就是通过数据中各个节点的关系,通过不同的缩进来达到树的效果.而数据中主要要把握id,父节点pId,name的关系,来显示其效果. 代码实现如下

angular checkbox 全选和反选功能

最近做写出了angularjs 全选和反选的数据绑定功能,分享出来给大家,有什么不对的地方请大家多多指教,angularjs 强大的数据绑定功能完全展现了新一代的web 开发的,完美的和html 应用在一起,实现新一代的技术完美结合.废话就不多说了,下面看代码: 1.html 页面: <table class="table" >    <!--主机组主机列表-->    <tr style="background-color: #555555;c

javascript实现全选,反选及全不选(其一)

javascript实现全选,反选及全部选 html 代码: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <

Extjs 4.2 树结点右键菜单(全选,反选,撤销)

自己写的最新版本extjs4.2的树结点的操作,记录一下,以后可能会用到. var tree = new Ext.tree.TreePanel({ flex: 1, animate: true, autoScroll: true, anchor: '100% 93%', store: new Ext.data.TreeStore({ root:{ expanded: true, text:'A', children:[{ expanded: true, text:'1', children:[{

html+css+js实现复选框全选与反选

1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 2 <html> 3 <head> 4 <title>html+css+js实现复选框全选与反选</title> 5 <meta http-equiv="content-type&qu

Android中购物车的全选、反选、问题和计算价格

此Demo主要解决的是购物车中的全选,反选计算价格和选中的条目个数的问题,当选中几条时,点击反选,会把当先选中的变为不选中,把不选中的变为选中.点击全选会全部选中,再次点击时,变为全部不选中. //-----------一下为main的布局----------------------- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http

全选与反选

我们的页面上有一个歌曲列表,列出多行歌曲名称,并匹配复选框供用户选择,并且在列表下方有一排操作按钮. <ul id="list"> <li><label><input type="checkbox" value="1"> 1.时间都去哪儿了</label></li> <li><label><input type="checkbox&qu