我试图使用jcrop但是对jquery是新手我对如何在jquery函数中使用“round”函数感到有点困惑。
当我通过PHP变量提交结果并将它们用于jquery中的屏幕显示时,我宁愿将它们舍入为jquery中的获取,从而确保jquery和php的一致性。我不希望一个人围着而另一个人围着。看起来round的defailt行为是舍入到最接近的整数,这很好。
我的脚本当前(有一些PHP)
<?php
$boxwidth=500;
$boxheight=500;
?>
<script>
$(function() {
$('#cropbox').Jcrop({ boxWidth: <?php echo $boxwidth;?>, boxHeight: <?php echo $boxheight;?> });
});
$(document).ready(function()
{
// Update co-ordinates
function updateCoordinates(cropbox)
{
$("#crop_x").val(cropbox.x);
$("#crop_y").val(cropbox.y);
$("#width").val(cropbox.w);
$("#height").val(cropbox.h);
}
// Attach jCrop
$("#cropbox").Jcrop({
<?php echo (isset($_POST['aspect_ratio']) ? 'aspectRatio: ' . ((float)$_POST['width'] / (float)$_POST['height']) . ',' : ''); ?>
onChange: updateCoordinates,
onSelect: updateCoordinates
});
});
-->
</script>
我不熟悉这种类型的代码,不知道如何舍入结果。我没有显示实际的图像文件,而是显示它的浏览器大小调整版本,并且经常得到像100.3394567892 x 100.544222像素的结果,这将导致100x101的图像。我知道它不会是“像素精确”,当我想要100x100时我可能不得不满足于99x99,但是显示的尺寸对于最终结果是真的,并且我将消除显示超过小数10位的图像大小。
在对OP中的代码进行一些尝试后,我应用了以下更改
$("#crop_x").val(cropbox.x);
$("#crop_y").val(cropbox.y);
$("#width").val(cropbox.w);
$("#height").val(cropbox.h);
至
$("#crop_x").val(Math.round(cropbox.x));
$("#crop_y").val(Math.round(cropbox.y));
$("#width").val(Math.round(cropbox.w));
$("#height").val(Math.round(cropbox.h));