Задать вопрос
  • Как правильно клонировать input[type=radio]?

    0xD34F
    @0xD34F Куратор тега JavaScript
    Хотите, чтобы суффиксы у атрибутов name были правильные - оператор + вам в помощь, добавляйте сколько надо.

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

    // исправляем ваш код
    $('.add-attr').on('click', function() {
      const index = $('.radios').length + 1;
    
      const $lastRow = $(this).closest('.container').find('.item').last();
      const $newRow = $lastRow.clone(true).insertAfter($lastRow);
    
      $newRow.find('input[type="radio"]').prop('name', 'name-' + index);
    });
    
    // или переписываем его без использования jquery
    document.querySelector('.container').addEventListener('click', e => {
      if (e.target.classList.contains('add-attr')) {
        const row = e.currentTarget.firstElementChild.cloneNode(true);
        const name = `name-${e.currentTarget.children.length + 1}`;
        e.currentTarget.appendChild(row);
        row.querySelectorAll('[type="radio"]').forEach(n => n.name = name);
      }
    });
    Ответ написан
    6 комментариев
  • Как клонировать селект с изменением id?

    0xD34F
    @0xD34F Куратор тега JavaScript
    Очень странный способ клонировать select'ы - сохранить настройки плагина клонируемых элементов, деактивировать плагин на клонируемых элементах, клонировать элементы, инициализировать плагин у клонов и повторно у оригиналов, обновить настройки. Можно сделать попроще: в самом начале сделать клон элементов, и потом уже клонировать его; инициализацию плагина вынести в отдельную функцию, которая будет принимать набор элементов.

    Странный способ получать новые значения id - единица в качестве начального значения и постфиксный инкремент. В результате последовательность идентификаторов получается такая: 1, 2, 3,... Элементы с 1 и 2 уже есть. Начальным значением должно быть максимальное существующее значение плюс единица. Или просто максимум, но инкремент тогда префиксный.

    const $row = $('.b-items').clone();
    let ID = +$row.find('select').last().attr('id').split('-').pop();
    
    function selectize($el) {
      $el.selectize({
        allowEmptyOption: true,
        create: true,
      });
    }
    
    selectize($('select'));
    
    $('.btn-clone').on('click', function() {
      selectize($row
        .clone()
        .insertBefore(this)
        .find('select')
        .attr('id', () => `select-${++ID}`)
      );
    });
    Ответ написан
    3 комментария
  • Как клонировать селект с изменением id?

    alams_stoyne
    @alams_stoyne
    Full Stack Developer - #PHP #CSS #JS #DB
    Всё проще:
    $('select').selectize({
      allowEmptyOption: true,
      create: true
    });
    var cloneID = 1;
    $(document).on('click', '.btn-clone', function(e) {
      e.preventDefault();
      var lastRow = $(this).parents('.b-parent').find('.b-items').last();
      cloneID = lastRow.find('select').size();
      var newRow = lastRow.clone().insertAfter(lastRow);
       newRow.find('select').each(function(e) {
       	cloneID++;
       	$(this).attr("id","select-"+cloneID);
       });
    });
    Ответ написан
    4 комментария
  • Как выровнять колонки?

    AngReload
    @AngReload
    Кратко о себе
    Не очень понятно, что можно использовать.
    Проще всего переделать в обычную таблицу.
    Можно сделать на flexbox, но html всё равно придётся менять - https://css-tricks.com/accessible-simple-responsiv...
    Ответ написан
    Комментировать
  • Как правильно вывести нужную дату?

    neuotq
    @neuotq
    Прокрастинация
    Привет. Смотри есть такая волшебный метод: getDay(), он возвращает порядковый номер дня недели.
    Ну те вот сегодня среда, а значит:
    const today = new Date();
    today.getDay();
    //3


    Воот, значит дальше думаю все понятно, воскресенье это 0, значит определяешь день недели требуемой даты,
    путем определения остатка
    //разница между текущим днем и воскресеньем на этой неделе
    today.getDay() % 7

    PS на ошибку указал Metalofon
    Ответ написан
    3 комментария
  • Почему result undefined?

    dimmond_pro
    @dimmond_pro
    Jedi
    Потому что на момент присвоения тексту элемента переменная a неопределена. Обновление значения переменной в обработчике события не изменит значение текста элемента, вам надо обновить текст также как и значение переменной
    Ответ написан
    3 комментария
  • Как упростить код?

    DaFive
    @DaFive
    Тыц

    Ну это если у вас индекс таба и дива совпадает.
    Ответ написан
    Комментировать
  • Как находить при помощи autocomplete?

    ThunderCat
    @ThunderCat Куратор тега JavaScript
    {PHP, MySql, HTML, JS, CSS} developer
    21 строка - меняйте логику, ищите субстроку не только от начала.
    Ответ написан
    Комментировать
  • Как находить при помощи autocomplete?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    /*check if the item starts with the same letters as the text field value:*/
            if (arr[i].substr(0, val.length).toUpperCase() == val.toUpperCase()) {

    Здесь меняйте условие на то, что вам нужно.
    Ответ написан
    Комментировать
  • Как находить при помощи autocomplete?

    0xD34F
    @0xD34F Куратор тега JavaScript
    Заменить:

    1. val = this.value

      на

      val = this.value.toUpperCase()

    2. if (arr[i].substr(0, val.length).toUpperCase() == val.toUpperCase()) {

      на

      if (arr[i].toUpperCase().includes(val)) {

    3. b.innerHTML = "<strong>" + arr[i].substr(0, val.length) + "</strong>";
      b.innerHTML += arr[i].substr(val.length);

      на

      b.innerHTML = arr[i]
        .split(RegExp(`(${val})`, 'i'))
        .map((n, i) => i & 1 ? `<b>${n}</b>` : n)
        .join('');


    Ответ написан
    Комментировать
  • Почему не правильно считает?

    @mShpakov
    Я так понял, у вас каждую итерацию прибавляет сумму всех чеков, а не нажатого чека
    Ответ написан
    Комментировать
  • Почему не правильно считает?

    SagePtr
    @SagePtr
    Еда - это святое
    Потому что вы не обнуляете результат и каждый раз он заново прибавляется, накапливаясь
    Ответ написан
    Комментировать
  • Почему не правильно считает?

    colonel
    @colonel
    Разработчик PHP, Laravel
    Добавьте строчку let formSum = 0; в функцию form.onchange
    А из начала кода уберите
    Ответ написан
    Комментировать
  • Почему не работает?

    @antpv
    Ты увеличиваешь значение переменной countFieldValue внутри функции changeCount, но не меняешь значение value в DOM. Я добавил функцию render, которая при клике будет обновлять value. Лучше конечно сразу внутри обработчиков это делать.

    function render() {
        countField.value = countFieldValue;
    }
    
    countMinus.addEventListener('click', function() {
        countFieldValue--;
        render()
    });
    
    countPlus.addEventListener('click', function() {
        countFieldValue++;
        render()
    });
    Ответ написан
    2 комментария
  • Как сделать простой счетчик посещений?

    teknik2008
    @teknik2008
    Расскажите про GOLANG. Мне интересно
    Если ожидается большая нагрузка, то можно сделать шардирование бд или применить бд которые готовы в большим объемам записи (clickhouse).
    Можно еще к примеру применить буферы, после наполнение, более 1000 записей, сразу всю пачку записать в бд. Но писать по 1-й строке в основную бд это очень дорого в точки зрения ресурсозатрат
    Ответ написан
    2 комментария
  • Как сделать простой счетчик посещений?

    @napa3um
    Сначала нужно делать "в лоб", просто увеличивать счётчик при запросе. Потом, когда проблема производительности реально возникнет, можно приступить к масштабированию схемы. Например, завести 10 (100, 1000) счётчиков, которые запросы инкрементируют, выбирая случайно любой из них, а при чтении их агрегировать (или с какой-то периодичностью в отдельный счётчик складывать агрегат). Подобная схема, в общем-то, применяется к любым данным, не только к счётчикам, для размазывания их по отдельным ресурсам (вычислительным узлам, таблицам, строкам), чтобы при записи не возникало конкуренции между запросами (а при чтении суммы счётчиков, как правило, не возникает лока на задеваемые ресурсы).

    Минутка философии
    Вообще, у хранилищ данных в информационной системе можно выделять две условные (не всегда чёткие) роли. OLTP - это хранилище, в которое приложение может быстро писать, там нужно делать минимум обработки, главное быстро сохранить данные и "отпустить" клиента (самый прямой пример такого хранилища - лог). И OLAP - это уже хранилище предвычисленных агрегатных данных, чтобы быстро отобразить их клиенту (а не вычислять во время запроса). И когда назревает необходимость масштабирования, эти роли начинают провляться всё явнее и явнее - приходится разделять этап приёма запроса и, собственно, его обработки, обработку откладывают на потом (складывают в очередь) настолько, насколько позволителен лаг между записью и актуализацией читаемых данных.
    Ответ написан
    1 комментарий
  • Почему некорректно работает условие проверки?

    0xD34F
    @0xD34F Куратор тега JavaScript
    Что если пользователь введёт значение, которое нельзя привести к числу? Получите NaN, этот случай у вас никак не обрабатывается.

    Результат повторного ввода в переменную count не записывается, если первый раз ввели некорректное значение, то оно там так и останется.

    Кроме того, непонятно, почему вы решили, что пользователю хватит всего двух попыток, чтобы ввести корректные данные. Это абсурд. Сделайте цикл, пусть мучается до победного конца:

    let count = null;
    while (1) {
      count = prompt('Введите количество колонок для таблицы умножения') | 0;
      if (count > 0) {
        break;
      }
      alert('Введите корректное число');
    }
    Ответ написан
    Комментировать
  • Как добавить в блок только одно изображение?

    kgb_zor
    @kgb_zor
    I need your traceback.
    И почитайте ещё это
    Ответ написан
    Комментировать