2017-03-02 80 views
0

当我选择一个图像时,它已经打开了一个默认的裁剪区域,我使用(setSelect)方法进行了设置,如果在裁剪区域没有任何改变的情况下确认裁切,作物在我的数据库中导致错误,我想我没有填充JCrop选择变量。我也注意到它有一个方法来填充这些变量(onSelect:selectcanvas),但它只在修改裁剪区域后调用。JCrop未填充的选择变量

这里是我的JCrop脚本

$("#canvas").Jcrop({ 
    minSize: [45, 45], 
    maxSize: [1200, 1200], 
    bgColor: 'white', 
    bgOpacity: .2, 
    setSelect: [150, 150, 50, 50], 
    aspectRatio: 1, 
    allowSelect: false, 
    onSelect: selectcanvas, 
    onRelease: clearcanvas, 
    boxWidth: crop_max_width, 
    boxHeight: crop_max_height, 
}, function() { 
    jcrop_api = this; 
}); 
    clearcanvas(); 
} 

而ONSELECT方法

function selectcanvas(coords) { 
    prefsize = { 
    x: Math.round(coords.x), 
    y: Math.round(coords.y), 
    w: Math.round(coords.w), 
    h: Math.round(coords.h) 
    }; 
} 

有什么办法开始与一些默认值的变量?

回答

0

更改此:

$("#canvas").Jcrop({ 
    minSize: [45, 45], 
    maxSize: [1200, 1200], 
    bgColor: 'white', 
    bgOpacity: .2, 
    setSelect: [150, 150, 50, 50], 
    aspectRatio: 1, 
    allowSelect: false, 
    onSelect: selectcanvas, 
    onRelease: clearcanvas, 
    boxWidth: crop_max_width, 
    boxHeight: crop_max_height, 
}, function() { 
    jcrop_api = this; 
}); 
    clearcanvas(); 
} 

要这样:

$("#canvas").Jcrop({ 
    onChange: selectcanvas, 
    onSelect: selectcanvas, 
    onRelease: clearcanvas, 
    minSize: [45, 45], 
    maxSize: [1200, 1200], 
    bgColor: 'white', 
    bgOpacity: .2, 
    setSelect: [150, 150, 50, 50], 
    aspectRatio: 1, 
    allowSelect: false, 
    boxWidth: crop_max_width, 
    boxHeight: crop_max_height, 
}, function() { 
    jcrop_api = this; 
}); 
    clearcanvas(); 
} 

这将确保你的函数被首先定义,这将确保当用户将图像以你的输入更改事件将被调用并且您的变量将被初始化。