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

如何让Iris颜色选择器在输入框赋值后自动匹配对应颜色?

如何让Iris颜色选择器同步输入框的已有颜色值

我有一个关联Iris颜色选择器的输入字段,当表单处于更新模式时,输入框已经被设置了颜色值,但Iris的圆形选择点和竖条选择器并未自动定位到对应颜色(如图所示:颜色选择器未同步)。相关代码如下:

HTML 代码

<script type="text/javascript" th:src="@{/js/jquery-ui.min.js}"></script>
<script type="text/javascript" th:src="@{/js/lib/iris.js}"></script>
<div class="mb-5">
    <label for="" class="form-label form-labe-custom me-2">Couleur :</label>
    <div class="mb-3 parent-select2-colors">
         <input type="text" class="couleurpicker form-control" name="couleur" maxlength="7" />
    </div>
</div>

JavaScript 代码

$(document).ready(function () {
    $(".couleurpicker").iris({
        width: 300,
        hide: true,
        mode:'hsl',
        controls: {
            horiz:'s',
            vert:'l',
            strip:'h'
        },
        border:true,
        change:function(event, ui) {
            $(event.target).attr('style','background-color: '+ui.color.toString()+' !important');
        }
    });
    $(document).on("click", function (e) {
        if ( ! $(e.target).is(".iris-picker-inner") ) {
            $('.couleurpicker').iris('hide');
        }
    });
    $('.couleurpicker').on("click", function (event) {
        $('.couleurpicker').iris('hide');
        $(this).iris('show');
        return false;
    });
    ...
    // 当进入表单编辑模式时:
    $("#formEdit input[name='couleur']").val(rowData.couleur);
    ...
});

解决方案

问题出在仅修改输入框的value无法触发Iris内部状态更新,需要显式调用Iris的API同步颜色:

  1. 动态更新场景(编辑模式)
    在设置输入框值之后,调用iris('color', 颜色值)方法通知Iris更新内部状态,再触发change事件同步UI:
// 替换原编辑模式代码
const targetInput = $("#formEdit input[name='couleur']");
const colorValue = rowData.couleur;
targetInput.val(colorValue)
           .iris('color', colorValue) // 设置Iris内部颜色
           .trigger('change'); // 触发事件同步选择器UI和背景样式
  1. 初始化同步场景(页面加载时已有值)
    如果输入框在页面加载时就有默认颜色值,可以在Iris初始化时传入color参数:
$(".couleurpicker").iris({
    // 其他配置项...
    color: $(".couleurpicker").val(), // 初始化时同步已有颜色
    change:function(event, ui) {
        $(event.target).attr('style','background-color: '+ui.color.toString()+' !important');
    }
});

原理说明

Iris组件内部维护独立的颜色状态,直接修改输入框的value不会触发它的UI更新。通过iris('color', colorValue)可以直接覆盖内部颜色值,触发change事件则会让选择器的圆形控制点、色相条同步到对应位置,同时执行你的change回调更新输入框背景。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 18:07:47