Javascript 更新Spectrum JS Colorpicker调色板中的新颜色

Javascript 更新Spectrum JS Colorpicker调色板中的新颜色,javascript,jquery,spectrumjs,Javascript,Jquery,Spectrumjs,我正在使用spectrum jQuery colorpicker并更改背景颜色,但只有一个问题。刷新页面后,选择器按钮的颜色变为黑色,而不是选定的颜色(例如,红色) 页面的背景色没有任何问题,除此之外一切正常。看看这个(点击查看图片): -> 这是我的代码: HTML: 我怎样才能解决这个问题 如果我将color.toRgbString()更改为color.toHexString()此问题得到解决,但会出现另一个问题(之后我无法将rgba颜色用于页面背景,透明度不起作用): 我有个主意,但是你应

我正在使用spectrum jQuery colorpicker并更改背景颜色,但只有一个问题。刷新页面后,选择器按钮的颜色变为黑色,而不是选定的颜色(例如,红色) 页面的背景色没有任何问题,除此之外一切正常。看看这个(点击查看图片):

->

这是我的代码:

HTML:

我怎样才能解决这个问题

如果我将
color.toRgbString()
更改为
color.toHexString()
此问题得到解决,但会出现另一个问题(之后我无法将rgba颜色用于页面背景,透明度不起作用):


我有个主意,但是你应该编辑spectrum.js文件。 此函数
函数inputOrgB(颜色)
强制将颜色选择器按钮的rgba颜色设置为rgb(0,0,0)(当您选择rgba颜色时,刷新页面后,颜色选择器按钮的颜色强制设置为该颜色,但十六进制没有问题)

要解决此问题:

function inputToRGB(color) {

    var rgb = { r: 0, g: 0, b: 0 };
    var a = 1;
    function inputToRGB(color) {

   var colorString = color.toString(),
       colorsOnly = colorString.substring(colorString.indexOf('(') + 1, colorString.lastIndexOf(')')).split(/,\s*/),
       red = colorsOnly[0],
       green = colorsOnly[1],
       blue = colorsOnly[2],
       opacity = colorsOnly[3];

    var rgb = { r: red, g: green, b: blue };
    var a = opacity;
在spectrum.js中查找此代码:

function inputToRGB(color) {

    var rgb = { r: 0, g: 0, b: 0 };
    var a = 1;
    function inputToRGB(color) {

   var colorString = color.toString(),
       colorsOnly = colorString.substring(colorString.indexOf('(') + 1, colorString.lastIndexOf(')')).split(/,\s*/),
       red = colorsOnly[0],
       green = colorsOnly[1],
       blue = colorsOnly[2],
       opacity = colorsOnly[3];

    var rgb = { r: red, g: green, b: blue };
    var a = opacity;
然后将上述代码更改为:

function inputToRGB(color) {

    var rgb = { r: 0, g: 0, b: 0 };
    var a = 1;
    function inputToRGB(color) {

   var colorString = color.toString(),
       colorsOnly = colorString.substring(colorString.indexOf('(') + 1, colorString.lastIndexOf(')')).split(/,\s*/),
       red = colorsOnly[0],
       green = colorsOnly[1],
       blue = colorsOnly[2],
       opacity = colorsOnly[3];

    var rgb = { r: red, g: green, b: blue };
    var a = opacity;
使用上面的正则表达式从浏览器cookie中获取颜色值,然后提取rgba颜色代码4部分的颜色值,然后使用“rgb”和“a”变量中的颜色值!
您可以同时使用
color.toString()
color.toRgbString()

我有个主意,但是你应该编辑spectrum.js文件。 此函数
函数inputOrgB(颜色)
强制将颜色选择器按钮的rgba颜色设置为rgb(0,0,0)(当您选择rgba颜色时,刷新页面后,颜色选择器按钮的颜色强制设置为该颜色,但十六进制没有问题)

要解决此问题:

function inputToRGB(color) {

    var rgb = { r: 0, g: 0, b: 0 };
    var a = 1;
    function inputToRGB(color) {

   var colorString = color.toString(),
       colorsOnly = colorString.substring(colorString.indexOf('(') + 1, colorString.lastIndexOf(')')).split(/,\s*/),
       red = colorsOnly[0],
       green = colorsOnly[1],
       blue = colorsOnly[2],
       opacity = colorsOnly[3];

    var rgb = { r: red, g: green, b: blue };
    var a = opacity;
在spectrum.js中查找此代码:

function inputToRGB(color) {

    var rgb = { r: 0, g: 0, b: 0 };
    var a = 1;
    function inputToRGB(color) {

   var colorString = color.toString(),
       colorsOnly = colorString.substring(colorString.indexOf('(') + 1, colorString.lastIndexOf(')')).split(/,\s*/),
       red = colorsOnly[0],
       green = colorsOnly[1],
       blue = colorsOnly[2],
       opacity = colorsOnly[3];

    var rgb = { r: red, g: green, b: blue };
    var a = opacity;
然后将上述代码更改为:

function inputToRGB(color) {

    var rgb = { r: 0, g: 0, b: 0 };
    var a = 1;
    function inputToRGB(color) {

   var colorString = color.toString(),
       colorsOnly = colorString.substring(colorString.indexOf('(') + 1, colorString.lastIndexOf(')')).split(/,\s*/),
       red = colorsOnly[0],
       green = colorsOnly[1],
       blue = colorsOnly[2],
       opacity = colorsOnly[3];

    var rgb = { r: red, g: green, b: blue };
    var a = opacity;
使用上面的正则表达式从浏览器cookie中获取颜色值,然后提取rgba颜色代码4部分的颜色值,然后使用“rgb”和“a”变量中的颜色值!
您可以同时使用
color.toString()
color.toRgbString()

如果在cookie中同时存储十六进制和rgba字符串,则在页面刷新时这两个字符串都可用。你所要做的就是将它们分开,并适当地使用每一个。@Roamer-1888谢谢,但问题仍然存在。也许我误解了问题,你说“如果我将color.toRgbString()更改为color.toHexString()…”,你能将该代码添加到问题中吗?@Roamer-1888再次检查。只需将两个toRgbString()替换为toHexString()在JS code.Related主题中:如果您在cookie中同时存储十六进制和rgba字符串,那么这两个字符串在页面刷新时都可用。你所要做的就是将它们分开,并适当地使用每一个。@Roamer-1888谢谢,但问题仍然存在。也许我误解了问题,你说“如果我将color.toRgbString()更改为color.toHexString()…”,你能将该代码添加到问题中吗?@Roamer-1888再次检查。只需将两个toRgbString()替换为toHexString()在JS代码相关主题中: