You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改Tag.js实现按回车键添加标签?

给标签输入框添加回车键添加标签的功能

嘿,我看了你的问题和代码片段,其实你已经离实现功能很近啦!现在的脚本只支持逗号和退格键操作,要加上回车键添加标签的功能,只需要在按键监听的逻辑里简单修改就行。

先理清楚你的现有逻辑

你的代码里已经通过keydown事件监听了逗号键(键码188)来添加标签,还有退格键删除标签。之前尝试用键码13(回车键)没成功,大概率是没把回车键的判断和现有的添加逻辑整合好。

修改步骤

直接找到mainInput的keydown事件监听代码块,把回车键的判断加入到逗号键的条件里就行,具体有两种写法:

写法1:用keyCode(兼容旧浏览器)

把原来判断逗号键的条件,改成同时判断逗号和回车键:

mainInput.addEventListener('keydown', function (e) { 
  // 同时监听逗号键(188)和回车键(13)
  if (e.keyCode === 188 || e.keyCode === 13) { 
    e.preventDefault(); // 必须加这个,阻止回车键默认的表单提交行为
    let tag = this.value.trim(); 
    if (tag.length > 0 && tags.indexOf(tag) === -1) { 
      tags.push(tag); 
      renderTags(); 
      this.value = ''; 
    } 
  } else if (e.keyCode === 8 && this.value.length === 0 && tags.length > 0) { 
    tags.pop(); 
    renderTags(); 
  } 
});

写法2:用e.key(更直观,现代浏览器推荐)

现在很多浏览器更推荐使用e.key来判断按键,可读性更强,你也可以改成这样:

mainInput.addEventListener('keydown', function (e) { 
  // 同时监听逗号和回车键
  if (e.key === ',' || e.key === 'Enter') { 
    e.preventDefault(); 
    let tag = this.value.trim(); 
    if (tag.length > 0 && tags.indexOf(tag) === -1) { 
      tags.push(tag); 
      renderTags(); 
      this.value = ''; 
    } 
  } else if (e.key === 'Backspace' && this.value.length === 0 && tags.length > 0) { 
    tags.pop(); 
    renderTags(); 
  } 
});

关键提醒

一定要记得调用e.preventDefault(),不然回车键会触发表单的默认提交动作,导致页面刷新,标签还没加上就跳转了,这也是很多人踩坑的点!

这样修改后,用户无论是按逗号还是回车键,都能正常添加标签啦~

内容的提问来源于stack exchange,提问作者Jasmine Joseph

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 06:24:54