Jquery和angularjs获取check框选中的值的方法汇总


Posted in Javascript onJanuary 17, 2016

在我们平常的开发中,有时候会需要获取一下check框选中的值,以及check框选中行的所有信息。这个时候有一个小技巧那就是我们可以把要获取的信息全部放到check框的值里面,这样我们可以获取check框选中值的时候也就相当于获取了当前行的信息。

<td><input class="states" type="checkbox"  name="orders"  value="{{e.merchantId}},{{e.orderCode}},{{e.userId}}"/></td> 

全选全不选:

var bischecked=$('#cboxchecked').is(':checked'); 
    var fruit=$('input[name="orders"]'); 
    fruit.prop('checked',bischecked);

这里为什么要用prop而不用attr,这是因为

对于HTML元素本身就带有的固有属性,在处理时,使用prop方法。
对于HTML元素我们自己自定义的DOM属性,在处理时,使用attr方法。
获取选中的值:

$('input[name="orders"]:checked').each(function(){ 
      var sfruit=$(this).val(); 
      var orders=sfruit.split(","); 
      var reminder=new Object(); 
      reminder.merchantId=orders[0]; 
      reminder.orderCode=orders[1]; 
      reminder.userId=orders[2]; 
  
      });

angularjs实现:

使用angularjs我们不用去操作dom,我们只需要去关心这个值的状态;
首先看一下html代码:

<!DOCTYPE html> 
 <html data-ng-app="App"> 
 <head> 
   <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/angularjs/1.0.8/angular.min.js"></script> 
   <script src="script2.js"></script> 
 </head> 
 <body data-ng-controller="AddStyleCtrl"> 
  
   <div>Choose Tags</div>   
   <div> 
     <div>You have choosen:</div> 
     <hr> 
     <label data-ng-repeat="selectedTag in selectedTags"> 
       (({{selectedTag}})) 
     </label> 
     <hr> 
     <div data-ng-repeat="category in tagcategories"> 
       <div>{{ category.name }}</div> 
       <div data-ng-repeat="tag in category.tags"> 
         <div> 
           <input type="checkbox" id={{tag.id}} name="{{tag.name}}" ng-checked="isSelected(tag.id)" ng-click="updateSelection($event,tag.id)"> 
           {{ tag.name }} 
         </div> 
       </div> 
       <hr> 
     </div> 
   </div> 
  
 <pre>{{selected|json}}</pre> 
 <pre>{{selectedTags|json}}</pre> 
  
 </body> 
 </html>

line2 定义了AngularJS App;
line4 引入angularjs脚本;
line5 引入自己写的script2.js脚本;
line7 指定控制器AddStyleCtrl
line13-15 实时显示已选标签给用户看;
line17-line26 使用双重循环列出数据库(本例中就存储在了controller的一个对象里)中的数据;
line21的这行代码作用可大了:<inputtype="checkbox" id={{tag.id}}name="{{tag.name}}" ng-checked="isSelected(tag.id)" ng-click="updateSelection($event,tag.id)">

存储了tag的id,name,利用isSelected(tag.id)来判断是否被checked,点击时候调用updateSelection($event,tag.id)方法;

如果想 ng-click 触发的函数里获取到该触发该函数的元素不能直接传入 this ,而需要传入event。因为在Angularjs里面,这个地方的this是 scope 。我们可以传入 event,然后在函数里面通过 event.target 来获取到该元素。
line29-30 是测试时候给自己看的,可以看到selected数组和selectedTags数组中的内容;

然后看看AngularJS代码:(script2.js)

/** 
 * Created by zh on 20/05/15. 
 */ 
// Code goes here 
 
var iApp = angular.module("App", []); 

iApp.controller('AddStyleCtrl', function($scope) 
{ 
  $scope.tagcategories = [ 
    { 
      id: 1, 
      name: 'Color', 
      tags: [ 
        { 
          id:1, 
          name:'color1' 
        }, 
        { 
          id:2, 
          name:'color2' 
        }, 
        { 
          id:3, 
          name:'color3' 
        }, 
        { 
          id:4, 
          name:'color4' 
        }, 
      ] 
    }, 
    { 
      id:2, 
      name:'Cat', 
      tags:[ 
        { 
          id:5, 
          name:'cat1' 
        }, 
        { 
          id:6, 
          name:'cat2' 
        }, 
      ] 
    }, 
    { 
      id:3, 
      name:'Scenario', 
      tags:[ 
        { 
          id:7, 
          name:'Home' 
        }, 
        { 
          id:8, 
          name:'Work' 
        }, 
      ] 
    } 
  ]; 
 
  $scope.selected = []; 
  $scope.selectedTags = []; 
 
  var updateSelected = function(action,id,name){ 
    if(action == 'add' && $scope.selected.indexOf(id) == -1){ 
      $scope.selected.push(id); 
      $scope.selectedTags.push(name); 
    } 
    if(action == 'remove' && $scope.selected.indexOf(id)!=-1){ 
      var idx = $scope.selected.indexOf(id); 
      $scope.selected.splice(idx,1); 
      $scope.selectedTags.splice(idx,1); 
    } 
  } 
 
  $scope.updateSelection = function($event, id){ 
    var checkbox = $event.target; 
    var action = (checkbox.checked?'add':'remove'); 
    updateSelected(action,id,checkbox.name); 
  } 
 
  $scope.isSelected = function(id){ 
    return $scope.selected.indexOf(id)>=0; 
  } 
});
Javascript 相关文章推荐
文字幻灯片
Jun 26 Javascript
文本有关的样式和jQuery求对象的高宽问题分别说明
Aug 30 Javascript
jquery获取所有选中的checkbox实现代码
May 26 Javascript
AngularJS入门教程之数据绑定用法示例
Nov 01 Javascript
JavaScript实现移动端轮播效果
Jun 06 Javascript
webpack 1.x升级过程中的踩坑总结大全
Aug 09 Javascript
浅谈vue中慎用style的scoped属性
Nov 28 Javascript
代码详解Vuejs响应式原理
Dec 20 Javascript
详解Javascript中new()到底做了些什么?
Mar 29 Javascript
JavaScript使用百度ECharts插件绘制饼图操作示例
Nov 26 Javascript
详解Vue2的diff算法
Jan 06 Vue.js
uniapp引入支付宝原生扫码插件步骤详解
Jul 23 Javascript
node.js+express制作网页计算器
Jan 17 #Javascript
JQuery实现网页右侧随动广告特效
Jan 17 #Javascript
Validform+layer实现漂亮的表单验证特效
Jan 17 #Javascript
javascript实现倒计时跳转页面
Jan 17 #Javascript
jQuery实现图片走马灯效果的原理分析
Jan 16 #Javascript
JavaScript时间操作之年月日星期级联操作
Jan 15 #Javascript
input点击后placeholder中的提示消息消失
Jan 15 #Javascript
You might like
PHP下用rmdir实现删除目录的三种方法小结
2008/04/20 PHP
php smarty模板引擎的6个小技巧
2014/04/24 PHP
推荐10个提供免费PHP脚本下载的网站
2014/12/31 PHP
laravel如何开启跨域功能示例详解
2017/08/31 PHP
Laravel服务容器绑定的几种方法总结
2020/06/14 PHP
JS 自动安装exe程序
2008/11/30 Javascript
Javascript创建自定义对象 创建Object实例添加属性和方法
2012/06/04 Javascript
js数组的操作详解
2013/03/27 Javascript
5秒后跳转效果(setInterval/SetTimeOut)
2013/05/03 Javascript
jQuery向上遍历DOM树之parents(),parent(),closest()之间的区别
2013/12/02 Javascript
Jquery 实现图片轮换
2015/01/28 Javascript
用JavaScript判断CSS浏览器类型前缀的两种方法
2015/10/08 Javascript
JavaScript对象_动力节点Java学院整理
2017/06/23 Javascript
es6新特性之 class 基本用法解析
2018/05/05 Javascript
使用vue中的混入mixin优化表单验证插件问题
2019/07/02 Javascript
JavaScript Reflect Metadata实现详解
2019/12/12 Javascript
js DOM的事件常见操作实例详解
2019/12/16 Javascript
JavaScript 正则应用详解【模式、欲查、反向引用等】
2020/05/13 Javascript
在react-antd中弹出层form内容传递给父组件的操作
2020/10/24 Javascript
[10:21]2018DOTA2国际邀请赛寻真——Winstrike
2018/08/11 DOTA
python 中字典嵌套列表的方法
2018/07/03 Python
详解PyCharm+QTDesigner+PyUIC使用教程
2019/06/13 Python
Python 中list ,set,dict的大规模查找效率对比详解
2019/10/11 Python
python编程进阶之异常处理用法实例分析
2020/02/21 Python
Python利用Xpath选择器爬取京东网商品信息
2020/06/01 Python
浅谈python opencv对图像颜色通道进行加减操作溢出
2020/06/03 Python
详解python如何引用包package
2020/06/07 Python
Html5大文件断点续传实现方法
2015/12/05 HTML / CSS
大学校庆邀请函
2014/01/11 职场文书
《窗前的气球》教学反思
2014/04/07 职场文书
一分钟演讲稿
2014/04/30 职场文书
城管执法人员纪律作风整顿思想汇报
2014/09/13 职场文书
有限公司股东合作协议书
2014/10/29 职场文书
党员理论学习心得体会
2016/01/21 职场文书
2019求职信:应届生求职信范文
2019/04/24 职场文书
诺贝尔奖获得者名言100句:句句启人心智,值永久收藏
2019/08/09 职场文书