ColdFusion中Cfloop遍历列表仅能为头尾复选框设置选中状态问题
问题根因
你的代码核心错误是cfloop的index索引变量和被遍历的列表变量重名,都使用了foundRecord.event_type。循环每执行一次,index索引变量会被赋值为当前遍历的列表项,直接覆盖了原字段中存储的完整逗号分隔列表,循环到第二项之后原有完整列表就被替换为单个值,后续匹配逻辑自然失效,最终只会出现首尾或前几个值能匹配成功的异常表现。
修复方案
方案1:修正现有循环逻辑
仅修改循环index变量名,不改动原有逻辑结构:
<!--每个input通过循环判断是否勾选--> <input type="checkbox" id="alumni_relations" value="Alumni Relations" name="cboxes" <cfloop index="currentEventType" list="#foundRecord.event_type#" delimiters=","> <cfoutput> <cfif currentEventType EQ "Alumni Relations">checked</cfif> </cfoutput> </cfloop> > <label for="alumni_relations">Alumni Relations</label> <br>
方案2:使用ListFind函数简化代码
无需循环,直接调用ColdFusion内置的列表匹配函数,代码更简洁高效:
<input type="checkbox" id="alumni_relations" value="Alumni Relations" name="cboxes" <cfif ListFind(foundRecord.event_type, "Alumni Relations", ",")>checked</cfif> > <label for="alumni_relations">Alumni Relations</label> <br>
内容的提问来源于stack exchange,提问作者Mason Perry
相关产品推荐
相关产品推荐

