eyecon Colorpicker - цвет не изменяется при клике - PullRequest
10 голосов
/ 19 апреля 2011

Я использую палитру цветов EyeCon на основе jQuery (http://www.eyecon.ro/colorpicker/).

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

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

Это может быть связано с тем, что объект ev для mousedown и mousemove различается.

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

заранее спасибо:)

1 Ответ

19 голосов
/ 27 мая 2011

В 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;
}, 

Этот маленький хак хорошо работает:)

...