javascript实现复选框选中属性


Posted in Javascript onMarch 25, 2015

熟悉web前端开发的人都知道,判断复选框是否选中是经常做的事情,判断的方法很多,但是开发过程中常常忽略了这些方法的兼容性,而是实现效果就好了。博主之前用户不少方法,经常Google到一些这个不好那个不好的文章,到后面自己都混乱了。今天偶然看到一篇外国的博客,觉得讲解的很不错,打算翻译成中文,并加上了一些自己的见解。

如果你从事web开发并且在你开发的网页中有复选框,你可能需要判断当前该复选框是否选中,进而执行一些条件语句。有很多种方法来判断一个复选框是否选中。

让我们先来看看原生的javascript是怎么判断这个属性的。在javascript中,在你选中了某个元素之后,你可以轻易地通过该元素的checked属性来判断你选中的复选框是否选中了。

我们来看一个例子,在你的页面上面有一个复选框并且该复选框有着唯一的id,比如myCheckBox ,如下面所示:

<input type="checkbox" id="myCheckBox"/>

现在我们首先通过javascript来选中这个元素然后获取它的checked属性。

    function checkCheckBox() {

        if (document.getElementById('myCheckBox').checked) {

            //change it to alert('Its Checked'); if you not working with console

            console.log('Its Checked');

        } else {

            console.log('No its not Checked');

        }

    }

可以看到,我们先通过id选中了这个元素然后判断它的checked属性,如果复选框选中了,它的值是true,如果复选框没有选中,它的值将是false。

如果你使用的是jQuery并且你不想用原生的javascript来进行这个判断,方法有很多:

使用 is(':checked')

这个用法中你将使用jQuery的 is()函数。这个函数的功能是判断选中的元素或者元素集合是否满足你传递给该函数的条件参数,如果条件符合,返回true,否则返回false。

所以为了使用这个函数,我们需要选中元素然后检测选择器:checked 的值,这个选择器适用于复选框、单选按钮和select标签。

[/code]
    $('input[type="button"]').click(function () {
        if ($('#myCheckBox').is(':checked')) {
            //change it to alert('Its Checked'); if you not working with console
            console.log('Its Checked');
        } else {
            console.log('No its not Checked');
        }
    });
[/code]

使用 prop()

在jQuery1.6之前,函数attr()用来获取元素的property 和attributes,但是非常容易让人产生疑惑。所以jQuery1.6之后,一个新的函数prop()来获取元素的当前的property值。

但是在这之前,我们首先需要弄明白property 和attributes的区别。attributes是你给HTML标签设置的一些属性值,这包括你给一个标签设置的class、id甚至给输入框设定初始值一样。如果你没有在标签里面设置属性值但是却通过attr()来获取属性值,

会出现undefined的情况。prop()同样是用来获取元素的属性值,但是与attr()有着明显的区别的是,即便没有在html标签中定义想要获取的属性,也能够正确的返回需要的当前的属性值。

根据官方的建议:具有 true 和 false 两个属性的属性,如 checked, selected 或者 disabled 使用prop(),其他的使用 attr()。

为了直观的体现两者之间的差别,你可以再页面加载完成之后立即改变输入框的值,这时候你就会发现即便是你的输入框的值变化了,用attr()获取的属性值并不会随着文本的改变而改变,而通过property()来获取的属性值会随着文本框内容的变化而变化。

看一个例子,这里我们有一个设置了初始值的和一些attribute属性集的输入框:

    <input type="text" id="myTextBox" value='set attribute value' />

然后在JQuery代码里我们这样写:

    console.log('Attribute Value is : '+$('#myTextBox').attr('value'));

    console.log('Property Value is : '+$('#myTextBox').prop('value'));

我们会发现,通过prop()来获取输入框里面的值永远都是和它里面的值同步的,而通过attr()老获取输入框里面的值一直都是在html标签里面设置的值。

$('input[type="button"]').click(function () {

    alert('Attribute Value is : '+$('#myTextBox').attr('value'));

    alert('Property Value is : '+$('#myTextBox').prop('value'));

});

使用 filter :checked

    var isChecked = $('#myCheckBox:checked').length > 0;
另外一种用于判断这个属性的值的方法是在选择元素的时候加上一个过滤器 :checked,然后根据所获得的元素的长度来判断元素的属性。但是这种用法并不推荐,因为当你的页面上有很多组复选框并且使用class选择器而不是id选择器的时候,所得到的答案可能是错误的。

$('input[type="button"]').click(function () {

    if ($('#myCheckBox:checked').length > 0 ) {

        //change it to alert('Its Checked'); if you not working with console

        console.log('Its Checked');

    } else {

        console.log('No its not Checked');

    }

});

我们能够看到,我们有好几种方法来获得复选款的选中属性。这也恰恰是web开发者经常需要用到并且在选择正确的使用方式时产生困惑的地方。

以上所述就是本文的全部内容了,希望对大家学习javascript能够有所帮助。

请您花一点时间将文章分享给您的朋友或者留下评论。我们将会由衷感谢您的支持!

Javascript 相关文章推荐
动态加载js的几种方法
Oct 23 Javascript
js操作iframe兼容各种主流浏览器示例代码
Jul 22 Javascript
js读取json的两种常用方法示例介绍
Oct 19 Javascript
JavaScript中的object转换函数toString()与valueOf()介绍
Dec 31 Javascript
JS+CSS实现表格高亮的方法
Aug 05 Javascript
Node.js Addons翻译(C/C++扩展)
Jun 12 Javascript
springMVC结合AjaxForm上传文件
Jul 12 Javascript
微信公众平台开发教程(五)详解自定义菜单
Dec 02 Javascript
JS实现新建文件夹功能
Jun 17 Javascript
vue axios post发送复杂对象问题
Jun 04 Javascript
vue中解决微信html5原生ios虚拟键返回不刷新问题
Oct 20 Javascript
swiperjs实现导航与tab页的联动
Dec 13 Javascript
jQuery的load()方法及其回调函数用法实例
Mar 25 #Javascript
jQuery使用$.get()方法从服务器文件载入数据实例
Mar 25 #Javascript
jQuery使用post方法提交数据实例
Mar 25 #Javascript
JavaScript实现常用二级省市级联下拉列表的方法
Mar 25 #Javascript
分享9个最好用的JavaScript开发工具和代码编辑器
Mar 24 #Javascript
JS通过ajax动态读取xml文件内容的方法
Mar 24 #Javascript
使用JavaScript 实现的人脸检测
Mar 24 #Javascript
You might like
PHP session_start()问题解疑(详细介绍)
2013/07/05 PHP
浅析php中三个等号(===)和两个等号(==)的区别
2013/08/06 PHP
PHP对象相互引用的内存溢出实例分析
2014/08/28 PHP
PHP常用编译参数中文说明
2014/09/27 PHP
php操作mongoDB实例分析
2014/12/29 PHP
Zend Framework教程之连接数据库并执行增删查的方法(附demo源码下载)
2016/03/21 PHP
jquery文本框中的事件应用以输入邮箱为例
2014/05/06 Javascript
jquery checkbox 勾选的bug问题解决方案与分析
2014/11/13 Javascript
第二次聊一聊JS require.js模块化工具的基础知识
2016/04/17 Javascript
vuejs通过filterBy、orderBy实现搜索筛选、降序排序数据
2020/10/26 Javascript
分析JS单线程异步io回调的特性
2017/12/01 Javascript
JavaScript求一组数的最小公倍数和最大公约数常用算法详解【面向对象,回归迭代和循环】
2018/05/07 Javascript
微信小程序排坑指南详解
2018/05/23 Javascript
vue实现拖拽进度条
2021/03/01 Vue.js
Python FTP操作类代码分享
2014/05/13 Python
Python中使用摄像头实现简单的延时摄影技术
2015/03/27 Python
Django中URL视图函数的一些高级概念介绍
2015/07/20 Python
分享Python字符串关键点
2015/12/13 Python
解决出现Incorrect integer value: '' for column 'id' at row 1的问题
2017/10/29 Python
Python常见数据结构之栈与队列用法示例
2019/01/14 Python
Python3匿名函数lambda介绍与使用示例
2019/05/18 Python
ubuntu 16.04下python版本切换的方法
2019/06/14 Python
python 使用plt画图,去除图片四周的白边方法
2019/07/09 Python
Python列表list操作相关知识小结
2020/01/29 Python
python如何把字符串类型list转换成list
2020/02/18 Python
python实现FTP文件传输的方法(服务器端和客户端)
2020/03/20 Python
美国紧身牛仔裤品牌:NYDJ
2017/05/24 全球购物
新西兰演唱会和体育门票网站:Ticketmaster新西兰
2017/10/07 全球购物
Otticanet英国:最顶尖的世界名牌眼镜, 能得到打折季的价格
2019/02/10 全球购物
在子网210.27.48.21/30种有多少个可用地址?分别是什么?
2014/07/27 面试题
销售文员岗位职责
2013/11/29 职场文书
招商专员岗位职责
2014/02/08 职场文书
2014学习全国两会精神心得体会2000字
2014/03/11 职场文书
幼儿园小班评语大全
2014/04/17 职场文书
初三毕业感言
2015/07/31 职场文书
OpenCV-Python实现人脸磨皮算法
2021/06/07 Python