Показать сообщение отдельно
  #47 (permalink)  
Старый 29.06.2017, 16:39
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от ФедорН
через header.php так и не смог подключить ни одним из способов (причина так мне осталась неясна)
Если используется CMS, то подключение скриптов в ней производится через конфигурацию. Читайте документацию. То что будет прописываться вне ее в шаблонах может быть переопределено конфигурацией.

Сообщение от ФедорН
Фреймворк jQuery мне показался более простым для понимания
Это не повод всегда обращаться к его услугам когда доступ уже есть и без него. Например, чтобы меньше бродить по набору в коде добавления элементов, строки кода с 06 по 13 можно заменить этим:

.find('select,input,output') //получаем элементы
                       .val(function() { //значения по умолчанию
                            return this.className == 'reset' ? '' 
                                                             : this.type == 'range' 
                                                             ? this.min 
                                                             : this.previousSibling.min 
                       })


В данном случае одной функцией производится установка значений по умолчанию всем добавляемым элементам. Для этого списку и полю отображающему результат расчета добавляется класс reset. С учетом того, что элемент хранящий результат расчета заменен на input, его код будет таким:

<input form="send" class="reset" name="result[]" readonly>


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

<label>Высота:</label>
<input form="send" type="range" min="40" max="200" name="height[]" value="40"><output>40</output>


В противном случае this.previousSibling вернет не input.

Я не выяснял что такое c, не знаю что должно увеличиваться на коэффициент, правьте сами, в примере, это к конечному результату. А расчет, это:

$('#form').on('input', 'select,input', function() {
        if(this.type == 'range') $(this).next().val(this.value)  //отобразить значение слайдера
        //рассчет
        var o = $(this).closest('.roword').find('select,input'), //получить все элементы
            v = o.eq(0).val(), //значение списка 
            w = o.eq(1).val(), //ширина
            h = o.eq(2).val(), //высота
            r = o.last().val(''); //вывод результата, очистить
            if(v) { //если в списке выбрано значение 
                v = v * w * h;
                if(w * h <= 2500) v *= 1.1;
                r.val(v.toFixed(2))
            } 
    })

Последний раз редактировалось laimas, 29.06.2017 в 17:43.
Ответить с цитированием