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

实现文本输入框与颜色选择框双向联动的通用JavaScript函数

嘿,这个双向同步颜色输入的需求挺实用的,我给你整理了完整的可运行实现,还加了点细节优化,比如自动补#和格式校验,避免无效输入的问题:

完整实现代码

<body>
  <input type="text" id="txtColor" placeholder="输入十六进制颜色,如#FF0000">
  <input type="color" id="colColor" value="#ffffff">
  <script>
    // 获取两个输入控件的DOM元素
    const txtColor = document.getElementById("txtColor");
    const colColor = document.getElementById("colColor");

    // 文本框输入内容时,同步到颜色选择器
    txtColor.addEventListener('input', function() {
      let inputValue = this.value.trim();
      
      // 如果用户没输入#,自动补全前缀
      if (inputValue && !inputValue.startsWith('#')) {
        inputValue = '#' + inputValue;
      }
      
      // 校验十六进制颜色的合法性(支持3位和6位格式)
      const validColorRegex = /^#([0-9A-Fa-f]{3}|[0-9A-Fa-f]{6})$/;
      if (validColorRegex.test(inputValue)) {
        colColor.value = inputValue;
      }
    });

    // 颜色选择器选色后,同步到文本框
    colColor.addEventListener('input', function() {
      txtColor.value = this.value;
    });
  </script>
</body>

功能细节说明

  • 文本框采用input事件实现实时同步,如果需要失去焦点才同步,把input换成blur即可
  • 自动补全#前缀:用户只输入FF0000或F00这类字符时,会自动转为标准的#FF0000/#F00格式
  • 格式校验:通过正则确保只有合法的十六进制颜色值才会同步,避免无效输入导致颜色选择器无响应
  • 颜色选择器选色后,文本框会立刻显示对应的标准十六进制颜色值(始终带#,6位格式)

内容的提问来源于stack exchange,提问作者bobby.dreamer

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:54:34