无法用鼠标拖动jcrop选择

时间:2011-02-28 22:09:24

标签: jquery jcrop

我和jcrop有这个奇怪的问题,我花了好几个小时试图找出答案。问题是我不能以demo中显示的方式拖动/移动选择。

如果我尝试使用setSelect初始化脚本,以便在页面加载时显示带有选择的图像, 选项可以移动,但是一旦我使用鼠标进行选择,无论我做什么,这个选择(当然取代了最初的选择)都无法拖动。但是,它可以通过键盘移动,但我不能依赖使用键盘的人。

我已经google了一下,唯一接近的是这篇文章:Cannot drag selection in Jcrop, what could break it?但这并不能解决我的问题(而且我没有相关的定位我知道所以它不会首先是问题的原因。)

我在mac上使用jquery 1.4.2和jcrop 0.9.8进行了以下设置(已尝试过Firefox和Safari):

    function updateCoords(c) {
        $('#x').val(c.x);
        $('#y').val(c.y);
        $('#w').val(c.w);
        $('#h').val(c.h);
    };

    function checkCoords()  {
        if (parseInt($('#w').val())) return true;
        alert('Please select a crop region then press submit.');
        return false;
    };

    $('#jcrop_target').Jcrop({
            minSize: [ 620,400 ],
            maxSize: [ 620,400 ],
            onSelect: updateCoords,
            onChange: updateCoords
    });

但我也尝试使用简单的$('#jcrop_target').Jcrop();来确保它不是导致冲突的其他函数。

任何输入都将非常非常感激。提前谢谢!

拉​​斯

2 个答案:

答案 0 :(得分:1)

  

事实证明我确实有一个位置:我的css中的亲戚,如本文所述:

http://www.stackoverflow.com/questions/3380969/

  

所以删除它解决了它:)

答案 1 :(得分:1)

我在一个项目中遇到了问题,有人在CSS中的所有div上声明了相对位置。不幸的是,修复它需要太多的工作,所以我不得不深入挖掘代码以找到修复方法。

使用最新的jCrop库(发布时Jcrop-0.9.12)对脚本进行了一些小修改,为我解决了问题。

在jquery.Jcrop.js的第1122行附近看起来像这样:

       if (Touch.support) {
            $track.bind('touchstart.jcrop', Touch.createDragger('move'));
        }

        $img_holder.append($track);
        disableHandles();

通过将$ img_holder.append($ track)更改为$ hdl_holder.append($ track)并确保$ hdl_holder是绝对位置,它为我解决了这个问题。有相对定位和zindexing的东西正在为我杀死它。

我对剧本的两处更改是:

第350行jquery.Jcrop.js:

$hdl_holder = $('<div />').width('100%').height('100%').css('zIndex', 320), 

已更改为:

$hdl_holder = $('<div />').width('100%').height('100%').css({
    zIndex: 320,
    position: 'absolute'
}),

第1122行jquery.Jcrop.js:

$img_holder.append($track);

已更改为:

$hdl_holder.append($track);