`

jquery checkbox 全选操作不正常的问题解决

 
阅读更多

       背景:对一个列表中的所有数据的checkbox操作。通过一按钮的形式,对所有数据的checkbox全选后,并进行提交。

       

<ul class="main-menu" id="task">
 	<li class="nav-header hidden-tablet"><input  type="checkbox" id="checkall" name="allCheckbox" onclick="checkAll(this);"><span>checkAll</span></li>	
    
	  	<li><input type="checkbox" id="checkbox-1" name="checkbox"><span>checkbox1</span></li>
	
	  	<li><input type="checkbox" id="checkbox-2" name="checkbox"><span>checkbox2</span></li>
	
	  	<li><input type="checkbox" id="checkbox-3" name="checkbox"><span>checkbox3</span></li>

	  	<li><input type="checkbox" id="checkbox-4" name="checkbox"><span>checkbox4</span></li>

	  	<li><input type="checkbox" id="checkbox-5" name="checkbox"><span>checkbox5</span></li>
</ul>

 

 

    

       问题:第一次的全选没有问题,而当手动去除几个选项后,再点击按钮时,不能实现全选的操作了。

 

 

//按钮的全部提交
function submitAllByButton() {
    var p = parent.window.document;  //获取父窗口的对象
    var checkall = p.getElementById("checkall");  //在父窗口中的id,通过id获取该总checkbox
    if(!checkall.checked){   //如果总的选中checkbox没有选中状态,则进行选中
        $(checkall).attr("checked", true);
    }
    var checkbox = p.getElementsByName("checkbox");  //获得各个分checkbox
    
    for(var i = 0 ; i < checkbox.length; i ++){   //循环,也可以用jquery的each
        var temp = checkbox[i];
        if(!temp.checked) {  //判断如果没有选中,则进行选中操作
            $(temp).attr("checked", true);
        } 
    }
    submit();   //最后是提交操作。
}

 

在这里不讨论业务实现逻辑的好坏。只是讲述当全部提交按钮再点击第二次的时候,不能对手动点选过的checkbox进行了操作。而且在上面代码里的循环里得到的选中结果,是"checked"也就是true。

 

这到底是怎么回事呢?为什么浏览器会返回给程序这个结果呢?在浏览器显示上明明已经是非“checked"状态。为什么程序得到的却是”checked“呢?

 

最后,我在jquery API 中找到了答案。

 

随着一些内置属性的DOM元素或window对象,如果试图将删除该属性,浏览器可能会产生错误。jQuery第一次分配undefined值的属性,而忽略了浏览器生成的任何错误

 

而在这之前我忽略了checkbox的状态显示,在我的项目里,它显示的两种状态分别是:”undefined“和"checked"

 

解决办法:

       使用JQuery中的.prop()方法,我的修改后代码如下,把.attr换成.prop

 

//按钮的全部提交
function submitByAllButton() {
    var p = parent.window.document;
    var checkall = p.getElementById("checkall");
    if(!checkall.checked){
        $(checkall).prop("checked", true);
    }
    var checkbox = p.getElementsByName("checkbox");
    
    for(var i = 0 ; i < checkbox.length; i ++){
        var temp = checkbox[i];
        if(!temp.checked) {
            $(temp).prop("checked", true);
        } 
    }
    submit();
}

 

而上面的解释说明也是在jquery API中的prop方法里有写到。

 

 

 

 

分享到:
评论

相关推荐

    jquery Checkbox 全选 反选 全不选 多种实现方法

    在涉及到表单元素如复选框(Checkbox)时,经常需要实现全选、反选和全不选的功能。下面将详细探讨 jQuery 如何实现这些功能,以及如何进行表单验证。 1. **全选功能** 要实现全选功能,首先我们需要一个主复选框...

    jQuery实现checkbox全选的方法

    本文实例讲述了jQuery实现checkbox全选的方法。分享给大家供大家参考。具体分析如下: 通过checkbox 进行全选和取消全选的操作,如果通过toggle进行处理,则会出现checkbox无法显示对勾的问题。 使用click事件,根据...

    jquery、js操作checkbox全选反选.docx

    ### jQuery与JavaScript操作Checkbox全选反选 #### 一、引言 在Web开发中,Checkbox(复选框)是一种非常常见的用户界面元素,用于收集用户的多选输入。尤其是在表单设计时,Checkbox的全选与反选功能极大地方便了...

    jquery 一个checkbox控制全选与反选

    页面上通过一个checkbox实现全选与反选

    Js/Jquery 实现checkbox全选,反选,全不选

    在提供的文件“js实现checkbox全选,反选,全不选.htm”中,应当包含了上述功能的具体实现。通过查看源码,我们可以了解到实际的HTML结构以及jQuery脚本是如何与之配合的。这个文件可以作为一个示例,帮助我们更好地...

    CheckBox全选并删除

    以上就是关于"CheckBox全选并删除"这个主题的相关知识点,涵盖了CheckBox全选的实现方式、删除操作的步骤、相关的ASP.NET控件属性和事件,以及在实际开发中需要注意的安全性、用户体验、性能优化等问题。

    JQuery 判断checkbox是否选中,checkbox全选,获取checkbox选中值

    JQuery 判断checkbox是否选中,checkbox全选,获取checkbox选中值

    checkbox实现全选和反选经典例子

    在高级控件如DataGridView中,通过结合Checkbox可以实现全选和反选功能,为用户提供便捷的操作方式。这个经典例子将深入探讨如何在Web应用中实现这一功能。 1. **Checkbox基本概念** Checkbox是HTML中的一个表单...

    jQuery制作全选CheckBox

    ### jQuery实现全选CheckBox功能详解 #### 背景与需求 在Web开发中,特别是在表单处理方面,经常会遇到需要实现多个复选框(CheckBox)的“全选”、“反选”等功能的需求。这样的功能不仅可以提升用户体验,还能...

    jquery实现checkbox全选、反选、全部选。精简写法

    jquery实现checkbox全选、反选、全部选,很不错的资源,欢迎大家下载学习var langType=""; var arLangType = []; $("[name='langType'][checked]").each(function(i) { arLangType[i]=$(this).val(); }); ...

    JQuery实现checkbox的全选取消全选

    在IT领域,特别是前端开发中,使用jQuery来操作DOM元素是一种常见的实践,特别是在处理复选框(checkbox)的全选与取消全选功能时。本文将深入解析如何使用jQuery实现这一功能,通过分析给定代码片段,提炼出关键...

    checkbox全选/取消全选以及checkbox遍历jQuery实现代码

    "checkbox全选/取消全选以及checkbox遍历jQuery实现代码" CheckBox全选/取消全选是指在一个CheckBox组中...本例中我们使用jQuery实现了CheckBox全选/取消全选和CheckBox遍历的功能,提供了一个实际应用中的解决方案。

    jQuery实现CheckBox全选、全不选功能

    废话不多说了,直接给大家贴代码了,具体代码如下所示: &lt;...jQuery实现CheckBox全选、全不选&lt;/title&gt; [removed][removed] [removed] $(function() { $(':checkbox').click(function(evt)

    checkbox全选,选中数据传到后台

    在IT行业中,尤其是在Web开发领域,"checkbox全选,选中数据传到后台"是一个常见的功能需求。这个功能主要用于用户批量处理数据,如删除、修改等。以下是对这个主题的详细解析: 首先,我们需要理解标题中的关键词...

    JQ checkbox 全选和全不选

    "JQ checkbox 全选和全不选"这个主题聚焦于jQuery如何实现复选框的选择功能,特别是全选和全不选的交互效果。这种功能常见于数据表格或列表的筛选中,允许用户一次性选择或取消选择所有项目。 首先,我们需要了解...

    jquery全选反选全不选案例

    "jquery全选反选全不选案例" 是一个常见的交互功能,常见于表格或者列表中,允许用户一键选择或取消所有选项。这个功能在数据筛选、批量操作等场景下非常实用。 实现这一功能的关键在于理解 jQuery 中的选择器和...

    jquery实现checkbox全选全不选的简单实例

    本文将介绍如何利用jQuery库来实现复选框(checkbox)的全选全不选功能。jQuery是一个快速、简洁的JavaScript库,其设计的宗旨是使网页的JavaScript操作更加简单、高效,尤其在DOM操作方面。通过引入jQuery库,我们...

    jquery checkbox全选反选效果代码

    知识点一:使用jQuery实现checkbox全选和反选功能 1. jQuery是一种快速、小巧、功能丰富的JavaScript库,它封装了JavaScript常用的功能代码,极大地简化了JavaScript的开发。 2. checkbox全选和反选是web开发中常见...

    jquery通用全选并控制操作按钮

    "jquery通用全选并控制操作按钮"这个主题是关于利用jQuery实现一种常见的用户界面功能,即在表格或者列表中提供一个全选按钮,可以一键选择所有选项,同时根据选中项的数量来控制其他操作按钮的可见性或可用性。...

    Jquery 实现checkbox全选方法

    综上所述,本文通过详尽地阐述了使用jQuery实现checkbox全选的方法,提供了实现的背景和思路,详细介绍了开发过程中解决的关键问题,并通过具体的代码和示例,向读者展示了如何在实际开发中应用这一方法。

Global site tag (gtag.js) - Google Analytics