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]'

入力形式を変更できない場合は、少なくとも、$.parseJSONJcropに渡す前にを使用して解析できます。

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

編集:必要に応じて(実際には文字列値に二重引用符が含まれています)、2回使用できます$.parseJSON。1回目はエンコードされた文字列値をデコードし、2回目はエンコードされた文字列内の配列をデコードします。

    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 に答える