CKeditor关键词选择异常求助:点击单关键词却填入全部前置关键词
修复方案
问题根源
代码错误地在循环内维护previousKeys累积数组,导致每个按钮的onclick事件绑定了循环到当前步骤的所有关键词拼接值,而非点击的单个关键词;同时循环内手动执行i++,易引发数组遍历逻辑混乱,出现跳过元素或越界风险。
修复后的代码
JavaScript部分
if (TextGrab != "") { var keyCSV = KeyDensityShow(TextGrab, 11, 3); var KeysArr = keyCSV.toString().split(','); var item, items = ''; // 移除累积用的previousKeys数组 for (var i = 0; i < KeysArr.length; i++) { item = ''; var key = KeysArr[i]; // 直接绑定当前关键词,而非累积值 item = '<button class="btn btn-default btn-xs" type="button" onclick="document.getElementById(\'thebox\').value=\'' + key + '\';">' + '<span class="badge">' + KeysArr[i+1] + '</span> ' + '<b>' + key + '</b></button> '; items += item; // 保留i++,适配原数组"关键词+数值"成对的结构 i++; } $('#KWdensity').html(items); }
关键改动说明
- 移除
previousKeys累积数组,每个按钮的onclick直接赋值当前点击的key,确保点击单个关键词时输入框仅填入该关键词。 - 保留循环内的
i++,适配原逻辑中KeysArr关键词与对应数值成对存储的结构。 - 修正按钮HTML的标签闭合顺序,避免结构错误。
可选优化(支持追加关键词)
若需求为点击关键词追加到输入框而非覆盖,可将onclick逻辑修改为:
onclick="var box = document.getElementById(\'thebox\'); box.value = box.value ? box.value + \', \' + \'' + key + '\' : \'' + key + '\';"
内容的提问来源于stack exchange,提问作者newspapper.eu
相关产品推荐
相关产品推荐

