首页 > 解决方案 > JavaScript - 清除 HTML 隐藏部分中复选框的值

问题描述

我有一个显示许多问题的网络表单。最近有报道称,当满足用于显示该问题的条件,然后不满足并再次满足时,表单的条件部分中显示的问题之一将保持其值。

即如果用户对问题 1 回答“是”,则会显示问题 1a 和 1b,如果他们将问题 1 的答案更改为“否”,则问题 1a 和 1b 将被隐藏,但如果他们更改了对问题 1 的答案返回“是”,问题 1a 和 1b 将再次显示,之前给出的答案仍被选中。1a 和 1b 应在它们被隐藏并再次显示后返回空白/空值。

如果 (a) 和 (b) 是带有以下代码的下拉表单元素,我设法在隐藏和重新显示时将部分 (a) 和 (b) 的答案空白:

但是,该表单由多种不同类型的字段组成,我目前在清除复选框列表的选定选项时遇到了一些麻烦(可以选择多个复选框)。

我尝试以与下拉列表类似的方式清除选择:

var cb = hiddenwrapper.children('select[id^="checkbox"]');
cb.checked = false;

但是,当我通过选择“是”和“否”作为问题 1 的答案来隐藏和重新显示带有复选框答案的问题时,在重新显示问题时仍会选中先前选中的复选框。

在将其设置为 false 后,我添加的调试cb.checked显示它的值确实显示它的值为 false,但实际上仍检查复选框本身:

CB:

检查:假

长度:0

当问题被隐藏并重新显示时,如何清除选中的复选框?

标签: javascripthtmlcheckboxdeselect

解决方案


使用 jQuery 选中/取消选中复选框的正确方法是.prop()方法。

http://api.jquery.com/prop/

所以它应该是这样的:

var cb = hiddenwrapper.children('select[id^="checkbox"]');
cb.prop('checked', false);

推荐阅读