Как работать с цветами CMYK в jQuery.colorpicker?

0

Я хотел бы использовать красивую jQuery colorpicker (https://github.com/vanderlee/colorpicker) с цветами CMYK.

Чтобы получить значения cmyk из диалогового окна, которое я использую

 colorFormat: ['EXACT', 'cp;mp;yp;kp'], 

Это приводит к чему-то подобному

 0;68.157958984375;68.157958984375;20.1904296875

Но когда я снова открываю диалог colorpicker, цвет не определяется.

Кажется, что EXACT шаблон не используется для чтения.

Вы можете проверить это с помощью:

<!DOCTYPE html>
<html><head>
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.js"></script>
 <script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.16/jquery-ui.js"></script>
 <link href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.16/themes/ui-lightness/jquery-ui.css" rel="stylesheet" type="text/css"/>
 <script src="colorpicker/jquery.colorpicker.js"></script>
 <link type="text/css" rel="stylesheet" href="colorpicker/jquery.colorpicker.css"></link>
</head>
<body>
<input type="text" class="cp-full" value="0;83.782958984375;83.782958984375;4.736328125" style="width:350px" />
<script>
$(function() {
    $('.cp-full').colorpicker({
        parts: ['map', 'bar', 'hex', 'rgb', 'alpha', 'cmyk', 'preview' ],
        showOn: 'both',
        colorFormat: ['EXACT', 'cp;mp;yp;kp'],

        init: function(event, color) {
            console.log(color);
        },      
    });
});
</script>
</body>

Итак, как я могу это сделать?

(Я посмотрел на объект, когда init запускается, но я предполагаю, что это поздно. Возможно, есть раннее событие для разделения значений из поля.)

  • 0
    Вы пробовали: colorformat('c, m, y, k')
  • 0
    Я пробовал colorFormat: ['EXACT', 'cp; mp; yp; kp'] безуспешно. Ваше выражение недопустимо, я думаю. Либо это должен быть один из предопределенных форматов, таких как HEX или RGB. В противном случае это должен быть символ для coler (chanel) и второй для типа данных.
Показать ещё 2 комментария
Теги:
colors
color-picker
cmyk

1 ответ

3
Лучший ответ

В документации плагина не указывается способ выполнения пользовательского чтения, проверяя код, который вы можете видеть, что оба анализатора CMYK и CMYK процентов ожидают формат cmyk(value, value, value, value). Но со следующим "взломом" (добавьте open событие, чтобы прочитать входное значение и обновить цвет управления), вы можете обойти проблему и показать выбранный ранее цвет каждый раз, когда вы нажимаете на элемент управления:

<!DOCTYPE html>
<html><head>
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.js"></script>
 <script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.16/jquery-ui.js"></script>
 <link href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.16/themes/ui-lightness/jquery-ui.css" rel="stylesheet" type="text/css"/>
 <script src="colorpicker/jquery.colorpicker.js"></script>
 <link type="text/css" rel="stylesheet" href="colorpicker/jquery.colorpicker.css"></link>
</head>
<body>
<input type="hidden" id="cp-hidden-input" value=""/>
<input type="text" class="cp-full" value="0,83.782958984375,83.782958984375,4.736328125" style="width:350px" />
<script type="text/javascript">
$(function() {
    $('.cp-full').colorpicker({
        parts: ['map', 'bar', 'hex', 'rgb', 'alpha', 'cmyk', 'preview' ],
        showOn: 'both',
        colorFormat: ['EXACT', 'cp,mp,yp,kp'],
        open: function(event, color) {
            var v = $(this).val();
            // Use either ',' or ';' as separator
            var separator = v.indexOf(',') != -1 ? ',' : ';';
            var cmyk = v.split(separator);
            color.colorPicker.color.setCMYK(cmyk[0] / 100.0, cmyk[1] / 100.0, cmyk[2] / 100.0, cmyk[3] / 100.0);
        },
    });
});
</script>
</body>
  • 0
    Спасибо за вашу помощь. Теперь я хочу использовать buttonColorize: true и скрыть ввод. После изменения фон изображения кнопки меняется. Но начальное значение не установлено. Я попытался сделать то же самое, что вы предложили открыть в init , но это не сработало. Я также попытался установить его с помощью color.colorPicker.color.setRGB ("# b81111"); в init , но это тоже не сработало. Спасибо за дополнительные идеи.
  • 0
    Вы можете опубликовать код?
Показать ещё 6 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню