Задать вопрос
  • Как найти все комбинации, из которых можно составить n?

    longclaps, мне кажется, Вам нужно более точно сформулировать задачу. Например, из постановки задачи не понятно как получается число n: только сложение или возможны другие операции? Кроме того, эта задача обязательно должна решаться средствами JS или не обязательно?
    А вообще, есть набор значений, из которых можно сложить любое число (при достаточной длине набора) простым сложением, причем каждое число набора будет использовано только один раз. Это классика...)))
  • Как сделать Респонсивный текст во всем проекте?

    SmthTo, большой экран, он ведь большой не только по ширине, но и по высоте))) Так что информации уместится по любому больше)))
    Но это уже юмор...
    В реальности же Вы правы. Широкий экран хорош, например, при работе с большими таблицами Excel - видно больше столбцов без горизонтального скроллинга. Но и здесь есть обнадеживающий (меня!) момент: мало кто из владельцев больших экранов открывает браузер на всю ширину экрана. Кроме того, и это главное - решение обсуждаемой нами проблемы зависит на 100% от поставленной задачи. Если задача сформулирована так, что пользователь должен видеть на экране максимум информации, то правы Вы. Если главное в задаче - привлекательный и одинаковый дизайн для устройств с любым разрешением, то прав я.
    Думаю, что и Ваш, и мой подход имеют право на существование. Все зависит от видения заказчика того, как должно ВЫГЛЯДЕТЬ решение поставленной задачи. Ну, и немного от того, как разработчик презентовал заказчику СВОЕ решение)))
  • Как найти все комбинации, из которых можно составить n?

    В представленном в топике примере можно использовать n-1 вложенных циклов (n - количество элементов массива). Но если массив большой, то может не хватить ресурсов машины.
    А вообще, это, на мой скромный взгляд, чисто комбинаторная задача.
  • Как сделать Респонсивный текст во всем проекте?

    SmthTo, простите, не совсем Вас понял...
    Если исходить из глобальных принципов типографики, весь контент должен занимать на странице 10-12% от общего пространства (правда, это принцип справедлив, в основном, для печатных изданий). Вот и представьте, что Вы используете респонсивные изображения, используя, скажем, в Bootstrap4, класс img-fluid. В этом случае, хоть с брейкпойнтами, хоть без, размер картинки будет изменяться плавно, а шрифт - нет. Попробуйте - увидите сами, я экспериментировал...
    А то что Вы видите, как недостаток: "Как бы текста должно помещаться больше, т. к. экран шире, но нет.", на мой взгляд является преимуществом: количество строк и символов в строке становится одинаковым для всех экранов и не нужно заморачиваться с наложением блоков или, наоборот, с появлением между ними неоправданно больших паддингов.
    Мне очень нравится эта дискуссия с Вами - она для меня очень информативна. Искренне благодарю.
  • Как сделать Респонсивный текст во всем проекте?

    SmthTo, em/rem я как раз понимаю. Просто проблема использования фиксированных единиц вкупе с брейкпойнтами в том, что изменение размера шрифта происходит скачкообразно на брейкпойнте. В действительности, это не имеет большого значения при скурпулезном подходе к выбору размера родительского шрифта для медиа составляющей. Т.е., например, у Вас есть стандартные брейкпойнты на 1200, 960 и 550рх (ну, или другие - не имеет значения). Тогда для каждого диапазона шрифты должны быть подобраны так, чтобы быть читабельными на любой ширине экрана из диапазона. Кстати, проблема сверхшироких экранов, о которой говорил Сергей Горячев, здесь тоже остается, только в профиль)))
    С другой стороны, производители экранов, что для мобайлов, что для десктопов, сейчас уже потихоньку приходят к унификации размеров. Поэтому идея брейкпойнтов не только жива, но и очень перспективна.
  • Почему не происходит событие submit?

    @sovlarus Автор вопроса
    Ivan Yakushenko, все заработало? И даже formData оказался не пустым? И даже данные формы в php-обработчик передал? Почему-то полагаю, что нет.
    Естеественно, если я напишу $('#save-utility').on('click'... все замечательно работает, но тогда этот скрипт попросту не видит формы и ее полей, поэтому тупо ругается на formData. Можно, конечно, поставить костыли и append'ом добить в formData значения полей. Но это костыли, теоретически кнопка с сабмитом и указанием идентификатора формы должна передавать управление скрипту с идентификатором формы, который обрабатывает submit.
    Указанная Вами функция readImage читает изменение в input с id="image" и type="file'. В итоге, в массиве $_FILE оказывается считанный файл, который проверяется и картинка выводится на экран. Там же кнопке с id="save-image" дается атрибут hidden="false", т.е. кнопка становится видимой. У нее, кстати, атрибут form="upload-image", т.е. равен идентификатору формы, и атрибут type="submit". При нажатии на ЭТУ кнопку управление передается скрипту $('#upload-image').on('submit'... Там уже читаются данные из формы и передаются в обработчик image-update-handler.php. Там все просто: файл картинки перемещается из директории tmp локального сервера в папку image и обновляется соответствующее поле базы данных.
    Вы простите, что я так подробно все расписываю, Вы наверняка это увидели и без моих объяснений. Я это делаю, скорее, для себя...
  • Как сделать Респонсивный текст во всем проекте?

    Будем считать, что убедили ))) Но еще ни один мой заказчик ни на этапе бета-, ни на этапе альфа-тестирования, ни в эксплуатации, не возражал против такого подхода.
  • Почему не происходит событие submit?

    @sovlarus Автор вопроса
    Ivan Yakushenko,
    <img id="preview" class="img-fluid left-logo" src="../images/<?=$globals[0]['avatar'];?>" />
    <form id="upload-image" enctype="multipart/form-data">
        <input type="file" name="image" id="image">
    </form>
    <button type="button" class="modal_subscribe_bitton" data-dismiss="modal" onclick="location.reload(true);">Закрыть</button>
    <input id="save-image" name="save-image" class="modal_subscribe_bitton" type="submit" form="upload-image" value="Сохранить изменения" hidden="true">

    $('#image').change(function(){
                    readImage(this);
            });
            function readImage ( input ) {
                    if (input.files && input.files[0]) {
                            if(!in_array( input.files[0].name.split(".").pop(), valid_ext )) {
                                    alert('Недопустимый формат файла: '+'.'+input.files[0].name.split(".").pop()+'\n'+'Допустимые форматы: .png, .jpg, .jpeg, .gif'+'\n'+'Рекомендуемый формат - .png');
                                    exit();
                            }
                            if (input.files[0].size > 1048576) {
                                    var file_size = input.files[0].size/1024/1024;
                                    alert ('Размер загружаемого файла '+file_size.toFixed(2)+'Мб - больше 1Мб'+'\n'+'Уменьшите размер файла или выберите другой файл');
                                    exit();
                            }
                            myFile = input.files[0];
                            var reader = new FileReader();
                            reader.onload = function (e) {
                                    $('#preview').attr('src', e.target.result);
                                    $('#LogoType').text('Новый логотип');
                                    $('#save-image').attr('hidden', false);
                            }
                            reader.readAsDataURL(input.files[0]);
                    }
            }
            $('#upload-image').on('submit',(function(e) {
                    e.preventDefault();
                    var formData = new FormData(this);
                    $.ajax({
                            type:'POST',
                            url: '../admin//modules/image-update-handler.php',
                            data: formData,
                            cache:false,
                            contentType: false,
                            processData: false,
                            success:function(data){
                                    console.log('success'+'\n'+data);
                                    $('#save-image').attr('hidden', true);
                            },
                            error:function(data){console.log('error');}
                    });
            }));
            $('#greeting_text').focus(function(){
                    $('#save-globals').attr('hidden', false);
            });
    Вы не поверите - это работает. А приведенный в топике клон ЭТОГО почему-то нет.
  • Как сделать Респонсивный текст во всем проекте?

    Сергей Горячев, согласен. Но много ли проектов вообще рассчитывается для такой ширины окна. Кроме того, всегда есть возможность ограничить размер шрифта медиазапросом.
  • Почему массив $_FILES пуст?

    @sovlarus Автор вопроса
    Коллеги, всем большое спасибо за дискуссию. Спор о том, работает ли ajax с файлами не имеет смысла. А понятие AJAX из коробки" вообще для меня новое. AJAX просто Asynchronous Javascript and XML, т.е. средство для асинхронной работы JS и XML. JavaScript работает с файлами? XML же вообще язык разметки ФАЙЛОВ.
    А что касается предствленного кода, то он полностью рабочий, ошибка была в адресе обработчика, указанного в параметре url запроса ajax.
  • Почему массив $_FILES пуст?

    @sovlarus Автор вопроса
    Ярослав Иванов, большая просьба: читайте документацию. Ajax отлично работает с файлами и тому миллион примеров можно найти в инете. В частности, идея представленного мной кода не оригинальна, а взята из работающего проекта.
  • Почему массив $_FILES пуст?

    @sovlarus Автор вопроса
    Lander, не получается. input.files[0] вне контекста функции $('#upload-image').
  • Почему не отображается модальное окно?

    @sovlarus Автор вопроса
    Andreaszak, благодарю! Вы правы. Но тогда непонятно, почему в документации Bootstrap и в их кодах примеров по другому...
  • Почему не отображается модальное окно?

    @sovlarus Автор вопроса
    В консоли все чисто. А этот код, вынесенный в отдельный файл замечательно работает. ExampleModal, в данном случае, взаимодействует с атрибутом aria-labelledby первого div блока модального окна и id заголовка. myModal обрабатывается java-скриптом Bootstrap.
  • Как закрепить выбор в select?

    @sovlarus Автор вопроса
    Ну я уж не совсем чайник ))
    Это вариант установки статического selected, а мне нужно его динамически менять, в зависимости от выбора option в select.
  • Что не так в передаче кода JS'ом в HTML?

    @sovlarus Автор вопроса
    Коллеги, искренне благодарю вас за исчерпывающие комментарии, но они не дают ответа на мой вопрос.
    Вопрос не в том, где и как выполняются JS и PHP коды. Вопрос в том, почему строка, которую я передаю в браузер оказывается комментарием? Проблему, как она выполняется или будет ли она вообще выполняться я сейчас не рассматриваю.
    Еще раз: я передаю на страницу просто строку
    var include = "<div class='content'><?php include ( './pages/"+pages_link+".php'); ?></div>";
    функцией inContent.innerHTML = include;, где
    var inContent = document.getElementById("content");

    Строка формируется правильно, console.log(inContent); дает результат
    <div class='content'><?php include ( './pages/utilities.php'); ?></div>

    Но в браузер строка передается в виде
    <div class='content'><!--?php include ( './pages/utilities.php'); ?--></div>
    . Причем, преобразование строки происходит еще в JavaScript'е: если проверить ее через console.log(inContent); то в консоли результат уже с комментариями.
    Надеюсь, я теперь правильно сформулировал вопрос?
  • Почему обработчик не видит select в форме?

    @sovlarus Автор вопроса
    alex-1917, все! Не понял, что сделал, но все стало работать))) Может быть, как результат очистки кэша браузера, может из-за того, что перекопипасил все имена переменных, или все это вместе... )))
  • Почему обработчик не видит select в форме?

    @sovlarus Автор вопроса
    alex-1917, а Вы делаете обработку форм в том де коде, что и сама форма? Это, конечно же, допустимо, но тогда код, если форм на странице несколько, разрастается до размеров, когда его контролировать становится затруднительно.
    Что касается кода обработчика, то там все предельно кратко: я просто пока хочу посмотреть содержимое массива $_POST:
    <?php
    if(isset($_POST['add-cat-utility'])) {
            var_dump($_POST);
    }
    ?>
  • В чем ошибка в передаче значения php переменной в код javascript?

    @sovlarus Автор вопроса
    Kenan, полностью с Вами согласен: js код должен работать в зависимости от атрибутов html-элементов.
    Но вот как бы Вы решили такую задачу:
    1. Нужно сделать несложный сайт вывода товаров из каталога.
    2. Каталог, ясен перец, содержит категории товаров и сами товары, привязанные к разным категориям. Причем, количество категорий и товаров заранее неизвестно.
    3. Ессно, нужна админка. И именно в не вся засада (мой код).
    4. И вот я админю категории.
    Самый простой случай, когда там 3 поля в БД: название, описание и картинка. Вариант вывода категори в админку только один - вывод в цикле (не важно for, while или foreach). Для этого делается шаблон формы (как Вы абсолютно справедливо заметили) и эта форма выводится в том самом цикле. Но если атрибуты элементов формы сделать статичными.
    Вот пример строки кода, которая выводит картинку каждой категории:
    <img id='image' class='img-fluid cat-img' src='../images/<?php echo $cat_array[$c_rows]['ImgCatName']; ?>' />

    Сейчас в моей БД 5 записей, цикл повторяется 5 раз и я получаю 5 форм с абсолютно одинаковыми атрибутами элементов.
    Очень хочется сделать хотя бы минимально красиво и заменять картинку во фронтенде без перезагрузки страницы, т.е. ajax'ом. JS и AJAX коды будут вынужденно работать по id тэга img. НО ВСЕ ID ТЭГОВ IMG ОДИНАКОВЫ. В этом случае я получаю (проверено!) замену картинки только в первой форме, причем это не зависит от того, в какой форме я пытаюсь эту картинку заменить.
    Простите, что много буквав, но, к сожалению, коротко проблему не изложить.
    P.S. Простого и понятного готового решения я не нашел, а использовать коробочные CMS желания нет - объем кастомизации там больше, чем если писать самому, да и избыточность функционала коробочных решений сильно напрягает.
  • В чем ошибка в передаче значения php переменной в код javascript?

    @sovlarus Автор вопроса
    И, кстати, Вы абсолютно правы по поводу тега php в javascript: попытка открыть дает ошибку компилятора в этой строке
    $('#'+<?php echo $id_preview; ?>).attr('src', e.target.result);

    в позиции 31 - именно там, где покоится закрывающий тег phpю