0

在我的 user.data.crop_position 值是“[100,100,200,200]”;

            var crop_position=user.data.crop_position.slice(1,user.data.crop_position.length-2);
        $('#cropbox').Jcrop({
            setSelect: crop_position,
            onChange: showPreview,
            onSelect: showPreview,
            aspectRatio: 1
        });

这样做我的 jcrop 没有在设定的位置选择我能做什么是由于我传入的字符串我如何删除它,

我知道这是个愚蠢的问题,但我多次遇到此类问题,也请建议我将来不会出现此类问题。

问候

拉胡尔

4

2 回答 2

0

setSelect - array [ x, y, x2, y2 ] 设置一个初始选择区域

所以你需要一个数组而不是字符串setSelect。你为什么不自己做user.data.crop_position一个数组?如果无法更改表示,您可以使用简单的算法进行转换:

var pos  = '"[ 100, 100, 200, 200 ]"'; // user.data.crop_position
var crop_position = pos.replace(/["\[\] ]/g, '').split(',');
for (var i = crop_position.length; i--;) {
  crop_position[i] = +crop_position[i]; 
}

现在你有一个值数组而不是字符串。

于 2010-11-13T12:10:44.350 回答
0

Jcrop手册说这setSelect需要一个数组,而不是一个字符串。

[100, 100, 200, 200] // rather than
'[100, 100, 200, 200]'

如果您无法更改输入格式,至少您可以$.parseJSON在将其传递给 Jcrop 之前使用它进行解析:

var crop_position = $.parseJSON(user.data.crop_position);

编辑:如有必要(双引号实际上存在于字符串值中),您可以使用$.parseJSON两次,第一次解码编码字符串值,第二次解码编码字符串中的数组:

    var crop_position = $.parseJSON($.parseJSON(user.data.crop_position));

或者只是在之前去掉周围的双引号$.parseJSON

    var crop_position = $.parseJSON(user.data.crop_position.slice(1, -1));    
于 2010-11-13T12:15:00.670 回答