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

如何直接从jscolor中获取十六进制颜色代码?

解决jscolor无法获取HEX值的问题

我来帮你理清这个问题,你遇到的情况其实是jscolor的用法误区,并不是版本更新导致只能通过背景色取RGB值哦~

为什么$('element').val()返回空字符串?

你在按钮的jscolor配置里写了{valueElement:'color_value'},这个配置的作用是把选中的HEX颜色值同步到指定ID为color_value的元素的value属性里,而不是同步到按钮本身的value。所以你直接去拿按钮的val()自然是空的,按钮本身的value属性并不会被jscolor更新。

正确获取HEX值的两种方式

方式1:直接通过jscolor实例获取

在你绑定的onchange回调里,this.jscolor就是当前的jscolor实例,它自带方法可以直接获取HEX值:

function changeStrokeCol(jscolorInstance) {
  // 获取带#号的HEX值,比如"#ff0000"
  const hexColor = jscolorInstance.toHEXString();
  // 这里可以把hexColor传给你的config处理
  config.changeStrokeCol(hexColor);
}

这种方法最直接,不需要依赖额外的DOM元素。

方式2:利用配置的valueElement

如果你想保留valueElement的配置,需要确保页面上存在对应的元素,比如添加一个隐藏输入框:

<input type="hidden" id="color_value">
<button id="strokeCol" class="jscolor {valueElement:'color_value'}" onchange="config.changeStrokeCol(document.getElementById('color_value').value)"> Stroke Color </button>

之后你就可以通过document.getElementById('color_value').value或者$('#color_value').val()拿到选中的HEX值了。

关于按钮背景色是RGB的说明

jscolor默认会将选中的颜色以RGB格式设置为控件的背景色,这是它的默认样式行为,和HEX值的获取完全不冲突,两者是独立的逻辑,不用通过背景色去转换颜色值。

你之前想的“把HEX代码显示在按钮内再用.html()获取”确实没必要,用上面两种方法就能轻松拿到正确的HEX值啦~

内容的提问来源于stack exchange,提问作者Smelly Duvet

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:36:57