Не отображается сетка для обрезки изображения (не работает Cropper)

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
Сергей2003
Сообщения: 92
Зарегистрирован: 2018.08.11, 11:07

Не отображается сетка для обрезки изображения (не работает Cropper)

Сообщение Сергей2003 »

У меня такой вопрос. Я хочу выбрать файл, выводить его в модальном окне и сверху выводить Cropper. Но что-то не получается. Без модального окна все получается, а с модальным - нет. Т.е. я не попадаю в скрипт Cropper. Вот фрагмент моего представление и скрипты:

Код: Выделить всё

<html>
<head>
    <meta name="viewport" content="width=device-width" />
  
    <link rel="stylesheet" href="~/Content/cropper.css">
 
</head>
<body>

   <a href="#" data-btn="add-image">Добавить</a>
   <input type="file" class="hidden" id="add-image-input" accept="image/*">
 
   <div class="modal fade" tabindex="-1" role="dialog" id="cropModal">
        <div class="modal-dialog" role="document">
            <div class="modal-content">
                <div class="modal-header">
                    <button type="button" class="close" data-dismiss="modal" aria-label="Закрыть"><span aria-hidden="true">&times;</span></button>
                    <p>Выберите область для превью-изображения. Оригинальное изображение обрезано не будет.</p>
                </div>
                <div class="modal-body">
                    <div style="margin:20px auto; max-width:640px;">
                        <img id="cropImage" src="#" style="max-width:100%;margin-top:12px;width:100%;">
                    </div>
                </div>
                <div class="modal-footer">
                    <button type="button" class="btn btn-success" data-dismiss="modal" id="cropSave">Сохранить</button>
                </div>
            </div>
        </div>
    </div>
 
        <script src="~/Scripts/cropper.js"></script>
        <script>
                $(document).on('click', '[data-btn=add-image]', function (e) {
                        e.preventDefault();
                        if ($('.form-photos-list').find('.form-photos-image').length < 6) {
                                    $('#add-image-input').click();
                        } else {
                               alert("Всего возможно загрузить шесть фотографий на лот.");
                        }
                    }).on('change', '#add-image-input', function (e) {
                    //            if (cropper) { cropper.destroy(); }
                        e.preventDefault();
                        var reader = new FileReader();
                        reader.onload = function (e) {
                             $('#cropModal').modal();
                              $('#cropImage').attr('src', e.target.result);
                        };
                    reader.readAsDataURL(this.files[0]);
                    })
 
                        $('#cropModal').on('shown.bs.modal', function (e) {
                        var image = document.getElementById('cropImage');
                        cropper = new Cropper(image, {
                            aspectRatio: 268 / 249,
                            dragMode: 'none',
                            autoCropArea: 1,
                            movable: false,
                            rotatable: false,
                            scalable: false,
                            zoomable: false,
                            background: false,
                            viewMode: 3
                            //cropBoxResizable: false
                        });
                    });
            </script>
Подскажите, пожалуйста, что я делаю не так и как сделать правильно.
Сергей2003
Сообщения: 92
Зарегистрирован: 2018.08.11, 11:07

Re: Не отображается сетка для обрезки изображения (не работает Cropper)

Сообщение Сергей2003 »

Что-то рано я обрадовался. Когда я

Код: Выделить всё

$('#cropModal').on('shown.bs.modal'
вставил в предыдущий блок перед

Код: Выделить всё

reader.readAsDataUrl
Cropper сработал. Но теперь всегда открывается первое открытое изображение. Я запутался а трех соснах. Помогите, пожалуйста, разобраться. Почему я не могу попасть в скрипт, обрабатывающий Cropper.
yiiliveext
Сообщения: 910
Зарегистрирован: 2019.08.13, 01:49

Re: Не отображается сетка для обрезки изображения (не работает Cropper)

Сообщение yiiliveext »

Сергей2003 писал(а): 2019.10.14, 13:12 Cropper сработал. Но теперь всегда открывается первое открытое изображение. Я запутался а трех соснах. Помогите, пожалуйста, разобраться. Почему я не могу попасть в скрипт, обрабатывающий Cropper.

Код: Выделить всё

$(document).on('click', '[data-btn=add-image]', function (e) {
                        e.preventDefault();
                        if ($('.form-photos-list').find('.form-photos-image').length < 6) {
                               $('#add-image-input').click();
                        } else {
                               alert("Всего возможно загрузить шесть фотографий на лот.");
                        }
                    }).on('change', '#add-image-input', function (e) {
                        e.preventDefault();
                        var reader = new FileReader();
                        reader.onload = function (e) {
                             $('#cropModal').modal();
                             $('#cropImage').attr('src', e.target.result);
                        };
		            reader.readAsDataURL(this.files[0]);
                    });
		   $(document).ready(function() {
		        $('#cropModal').on('shown.bs.modal', function (e) {
                            var image = document.getElementById('cropImage');
                            cropper = new Cropper(image, {
                                aspectRatio: 268 / 249,
                                dragMode: 'none',
                                autoCropArea: 1,
                                movable: false,
                                rotatable: false,
                                scalable: false,
                                zoomable: false,
                                background: false,
                                viewMode: 3
                                //cropBoxResizable: false
                            });
                        }).on('hidden.bs.modal', function () {
                            cropper.destroy();
                        });
	           });
Сергей2003
Сообщения: 92
Зарегистрирован: 2018.08.11, 11:07

Re: Не отображается сетка для обрезки изображения (не работает Cropper)

Сообщение Сергей2003 »

yiiliveext, огромное спасибо !!! Получилось.
Ответить