当前位置: 首页 > 知识库问答 >
问题:

在primefaces中使用颜色选择器的JQuery自然界面

宋和颂
2023-03-14
<h:outputText value="#{bean.color}" id="colorId"/>
<p:colorPicker value="#{bean.color}" />

JQuery颜色选择器组件有一个很好的接口来实现这一点。但我该怎么用呢?如何在生成组件的颜色选择器中注册onChange事件?

$('#colorSelector').ColorPicker({
    color: '#0000ff',
    onChange: function (hsb, hex, rgb) {
        $('#colorSelector div').css('backgroundColor', '#' + hex);
    }
});

共有1个答案

慎俊雄
2023-03-14

我在网上找你的问题,但也找不到任何有用的解决办法。所以我决定使用与我的答案相同的方法。

以下是我的建议:

从primefaces中获取JS代码并重写它:

        <h:form prependId="false">

                <h:outputText value="t#{testas.color}" id="colorId3"/>
                <p:colorPicker id="cid" value="#{testas.color}" widgetVar="co" />           

        </h:form>


        <script type="text/javascript">

        PrimeFaces.widget.ColorPicker = PrimeFaces.widget.BaseWidget.extend({

            init: function(cfg) {
                this._super(cfg);

                this.input = $(this.jqId + '_input');
                this.cfg.popup = this.cfg.mode == 'popup';    
                this.jqEl = this.cfg.popup ? $(this.jqId + '_button') : $(this.jqId + '_inline');
                this.cfg.flat = !this.cfg.popup;
                this.cfg.livePreview = false;
                this.cfg.nestedInDialog = this.jqEl.parents('.ui-dialog:first').length == 1;

                this.bindCallbacks();

                //ajax update check
                if(this.cfg.popup) {
                    this.clearOrphanOverlay();
                }

                //create colorpicker
                this.jqEl.ColorPicker(this.cfg);

                //popup ui
                if(this.cfg.popup) {
                    PrimeFaces.skinButton(this.jqEl);
                    this.overlay = $(PrimeFaces.escapeClientId(this.jqEl.data('colorpickerId')));
                    this.livePreview = $(this.jqId + '_livePreview');
                }
            },

            bindCallbacks: function() {
                var _self = this;

                this.cfg.onChange = function(hsb, hex, rgb) {
                    _self.input.val(hex);

                    if(_self.cfg.popup) {

                        _self.livePreview.css('backgroundColor', '#' + hex);
                    }
                };

                this.cfg.onShow = function() {
                    if(_self.cfg.popup) {
                        _self.overlay.css('z-index', ++PrimeFaces.zindex);
                    }

                    var win = $(window),
                    positionOffset = _self.cfg.nestedInDialog ? '-' + win.scrollLeft() + ' -' + win.scrollTop() : null;

                    if(_self.cfg.nestedInDialog) {
                        _self.overlay.css('position', 'fixed');
                    }

                    //position the overlay relative to the button
                    _self.overlay.css({
                                left:'',
                                top:''
                        })
                        .position({
                            my: 'left top'
                            ,at: 'left bottom'
                            ,of: _self.jqEl,
                            offset : positionOffset
                        });
                }

                this.cfg.onHide = function(cp) {
                    _self.overlay.css('z-index', ++PrimeFaces.zindex);

                    $('#colorId3').html(_self.input.val()); // -> ADDED BY ME

                    $(cp).fadeOut('fast');
                    return false;
                }
            },

            /**
             * When a popup colorpicker is updated with ajax, a new overlay is appended to body and old overlay
             * would be orphan. We need to remove the old overlay to prevent memory leaks.
             */
            clearOrphanOverlay: function() {
                var _self = this;

                $(document.body).children('.ui-colorpicker-container').each(function(i, element) {
                    var overlay = $(element),
                    options = overlay.data('colorpicker');

                    if(options.id == _self.id) {
                        overlay.remove();
                        return false;   //break;
                    }
                });
            }

        });

        </script>
 类似资料:
  • 颜色字段存储一个字符串作为其值,并存储一个字符串作为其文本。 它的值是格式为#rrggbb的字符串,而其文本也可以是格式为#rgb的字符串。 颜色字段 打开编辑器的颜色字段 压缩的颜色字段 新建 { "type": "example_colour", "message0": "colour: %1", "args0": [ { "type": "field_colo

  • 用于颜色选择,支持多种格式。 基础用法 使用 v-model 与 Vue 实例中的一个变量进行双向绑定,绑定的变量需要是字符串类型。 <div class="block"> <span class="demonstration">有默认值</span> <el-color-picker v-model="color1"></el-color-picker> </div> <div clas

  • ColorPicker 颜色选择器 用于颜色选择,支持多种格式。 基础用法 :::demo 通过value属性控制当前显示的颜色。 render() { const color1 = '#20a0ff'; const color2 = null; return ( <div> <div className="block"> <span classNa

  • ColorPicker 颜色选择器 用于颜色选择,支持多种格式。 基础用法 使用 v-model 与 Vue 实例中的一个变量进行双向绑定,绑定的变量需要是字符串类型。 <div class="block"> <span class="demonstration">有默认值</span> <el-color-picker v-model="color1"></el-color-picker

  • 关于选择颜色 可以通过使用 Illustrator 中的各种工具、面板和对话框为图稿选择颜色。如何选择颜色取决于图稿的要求。例如,如果希望使用公司认可的特定颜色,则可以从公司认可的色板库中选择颜色。如果希望颜色与其他图稿中的颜色匹配,则可以使用吸管或拾色器并输入准确的颜色值。 可以使用下列任一功能来选择颜色: 色板面板和色板库面板提供不同的颜色和颜色组。可以从现有的色板和库中选择颜色,也可以创建自

  • 主要内容:创建ColorPicker,示例,自定义颜色颜色选择器控件允许用户从可用的颜色范围中选择颜色,或通过指定RGB或HSB组合设置其他颜色。JavaFX ColorPicker控件具有颜色选择器,调色板和自定义颜色对话框窗口。 创建ColorPicker 以下代码使用空构造函数创建一个颜色选择器控件,颜色选择器控件使用默认颜色,即。 还可以提供颜色常量作为当前选择的颜色。 还可以提供网络颜色值作为当前选择的颜色 示例 如下示例代码 - 自定义颜