jQuery скрытое значение ввода при изменении не срабатывает - PullRequest
0 голосов
/ 13 июня 2018

Concrete5 имеет средство выбора изображений, которое обновляет скрытое значение ввода с идентификатором изображения после выбора изображения, например:

<input name="pictureID" value="22" type="hidden">

Мне нужно загрузить выбранное изображение в форму «Добавить блок» после выбораобраз.То есть, чтобы загрузить изображение (я могу получить URL-адрес изображения по идентификатору) после обновления скрытого ввода с идентификатором.

Это работает только в том случае, если изображение было выбрано и сохранено ранее:

$('input[name=pictureID]').on('change', function() {
...
}).trigger('change');

Но если средство выбора изображений очищено и выбрано новое изображение, вышеуказанное не работает, поскольку скрытый ввод динамически добавляется после выбора изображения.Хорошо, хорошо, я попробовал это вместо этого:

$(document).on('change', 'input[name=pictureID]', function() {
...
}).trigger('change');

Но это тоже не работает.Вероятно, потому что изменение скрытого элемента, который должен быть запущен, чтобы получить новое значение.Если бы я сам менял значение, я бы его активировал.Но как мне вызвать скрытое изменение входного значения, если мне нужно знать, когда оно было изменено системой в первую очередь?

Как загрузить изображение при обновлении скрытого входного значения?

1 Ответ

0 голосов
/ 13 июня 2018

Вот код JavaScript, который срабатывает при выборе файла
+
Я добавил функцию (handleCustomImageChoice), которая получает все данные выбранного файла.

$(document).ready(function(){
    function handleCustomImageChoice(result){
        console.log(result);

        //check the result object to get the url of the file
        //EXAMPLES :
        //get thumbnail url =
        console.log(result.files[0].resultsThumbnailImg);

        //get full size url =
        console.log(result.files[0].url);
    }

    $(document).on('change', 'form', function(){
        //when a file is selected in the file manager, then the nearest form is triggered to 'change'...
        //first check if the form that is triggered has the required input
        let closestForm = $('input[name=pictureID]').closest('form').attr('action');
        let currentForm = $(this).attr('action');

        if(closestForm == currentForm){
            //here your action when the hidden input value is changed
            console.log($('input[name=pictureID]').val());
            let fileID = $('input[name=pictureID]').val();
            if(fileID != 0){
                // ConcreteFileManager.getFileDetails(fileID , callback);
                ConcreteFileManager.getFileDetails(fileID, handleCustomImageChoice);
            }
        }
    });
});

Во время моегоВ ходе исследования этой проблемы я также столкнулся с объектом javascript под названием «ConcreteEvent» ... Этот объект обрабатывает события JS из ядра ... Однако я не смог подписаться на событие FileManagerSelectFile.Поэтому я не могу дать вам этот код ... но приведенный выше код должен дать вам то, что вам нужно.

...