2011-04-19 7 views
10

jquery 기반 eyeCon 색상 선택 도구 (http://www.eyecon.ro/colorpicker/)를 사용하고 있습니다.eyecon Colorpicker - 클릭 이벤트에서 색상이 변경되지 않습니다.

컬러 영역 위로 마우스를 가져 가서 끌면 색이 바뀝니다. 하지만 컬러 영역을 클릭하기 만하면 색상이 업데이트되지 않습니다.

소스를 파고 mousedown 및 mousemove에서 각각 downSelector() 및 moveSelector()라는 두 함수가 호출되었습니다. 방금 자신의 ev 객체를 전달하는 downSelector() 함수에서 moveSelector()에 대한 호출을 추가했습니다. 그러나 그것은 다음과 같은 에러를 throw합니다 : Uncaught TypeError : 정의되지 않은 'cal'속성을 읽을 수 없습니다.

mousedown 및 mousemove의 ev 오브젝트가 다를 수 있기 때문일 수 있습니다.

하지만 mousedown 이벤트의 색상을 업데이트해야합니다. 어떤 제안? 이 같은 upSelector에서 moveSelector를 호출 할 수 있습니다 사전 : colorpicker.js에서

답변

18

감사 :

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

이 작은 해킹은 잘 작동합니다 :)

+8

을 실제로 바로 호출하는' moveSelector (ev)'함수가'upSelector()'에서 정상적으로 작동하므로 코드 전체를 복사하여 붙여 넣을 필요가 없습니다 –

+1

@Naoise, 완벽하게 작동했습니다. – Kon

+0

도움이되었습니다. –

관련 문제