jQuery点击复选框设置相邻隐藏input值时空值赋值失效问题
问题根因
判断条件存在逻辑错误:使用jQuery的.val()方法获取未赋值input的value时,返回值是空字符串'',而非null。
原代码中$(this).next().val() != null的判断永远成立——即使隐藏域已经被置空,空字符串与null比较的结果也是不相等,因此每次点击复选框都会触发置空逻辑,永远无法进入赋值的else分支,最终表现为空值状态下点击无反应。
修复代码
建议给next()方法显式传入.comp-id选择器,避免后续DOM结构调整(如两个元素间插入文本节点、其他标签、注释)时匹配到错误元素,最终可正常运行的代码如下:
$(document).on('change', '.comp-checkk', function() { const $hiddenInput = $(this).next('.comp-id'); if ($hiddenInput.val() !== '') { $hiddenInput.val(''); } else { $hiddenInput.val($(this).val()); } });
匹配的HTML结构示例
<input type="checkbox" class="comp-checkk" value="45164c0b-fc92-4f93-9c62-ea61336130eb"> <input type="hidden" class="comp-id" name="component_id[]" value="45164c0b-fc92-4f93-9c62-ea61336130eb"> <input type="checkbox" class="comp-checkk" value="45164c0b-fc92-4f93-9c62-ea61336130eb"> <input type="hidden" class="comp-id" name="component_id[]"> <input type="checkbox" class="comp-checkk" value="45164c0b-fc92-4f93-9c62-ea61336130eb"> <input type="hidden" class="comp-id" name="component_id[]">
内容的提问来源于stack exchange,提问作者Catto
相关产品推荐
相关产品推荐

