eyecon Colorpicker — цвет не меняется при событии щелчка

#jquery-plugins #click #color-picker

#jquery-плагины #нажмите #средство выбора цвета

Вопрос:

Я использую средство выбора цвета eyeCon на основе jquery (http://www.eyecon.ro/colorpicker /).

Когда я нажимаю и перетаскиваю курсор мыши на цветную область, цвет меняется. Но когда я просто нажимаю на цветную область, цвет не обновляется.

Я покопался в его исходном коде и обнаружил, что две функции с именами downSelector () и moveSelector () вызываются при наведении курсора мыши и перемещении курсора мыши соответственно. Я только что добавил вызов moveSelector() для функции downSelector (), передающей свой собственный объект ev. Но это не работает и выдает следующую ошибку: неперехваченная ошибка типа: не удается прочитать свойство ‘cal’ неопределенного

Это может быть потому, что объект ev для mousedown и mousemove отличаются.

Но мне нужно обновить цвет при наведении курсора мыши. Есть предложения?

заранее спасибо 🙂

Ответ №1:

В colorpicker.js , вы можете вызвать moveSelector из upSelector вот так:

 moveSelector = function (ev) {
  change.apply(
  ev.data.cal.data('colorpicker').fields.eq(6)
    .val(parseInt(100*(150 - Math.max(0,Math.min(150,(ev.pageY - ev.data.pos.top))))/150, 10))
    .end().eq(5).val(parseInt(100*(Math.max(0,Math.min(150,(ev.pageX - ev.data.pos.left))))/150, 10))
    .get(0),[ev.data.preview]
  );
  return false;
},

upSelector = function (ev) {

  moveSelector(ev);

  fillRGBFields(ev.data.cal.data('colorpicker').color, ev.data.cal.get(0));
  fillHexFields(ev.data.cal.data('colorpicker').color, ev.data.cal.get(0));
  $(document).unbind('mouseup', upSelector);
  $(document).unbind('mousemove', moveSelector);
  return false;
}, 
  

Этот небольшой хак работает хорошо 🙂

Комментарии:

1. на самом деле, просто вызов moveSelector(ev) функции изнутри upSelector() работает нормально, нет необходимости копировать-вставлять весь код

2. то же самое для смены оттенка, вызовите moveHue(ev); в функции upHue.