Показать сообщение отдельно
  #63 (permalink)  
Старый 24.07.2017, 13:51
Аспирант
Отправить личное сообщение для ФедорН Посмотреть профиль Найти все сообщения от ФедорН
 
Регистрация: 19.06.2017
Сообщений: 40

laimas, добрый день. посмею обратиться еще раз

При тестировании калькулятора обнаружились проблемы в ie 10, 11 и некоторых мобильных браузерах,а именно:

1. При изменении значение ползунка, не меняется значение output, value всегда остается начальным. В связи с этим, а также неудобством использования ползунка (точный поиск значения с шагом 1) на мобильных устройствах, хотелось бы реализовать рядом с ползунком iput text или number, который будет дублировать значение ползунка,а при вводе числа в input будет меняться значение ползунка, учитывая ограничения, и их автоматическая корректировка, max и min. Пересмотрел примеры, но везде это реализовано через ui, к которому прибегать не хотелось бы (оставив input range). Попытки "колхоза" результата не дали вообще никакого

2. При вводе значений, результат в поле input readonly не выводится.
Он может вывестись/измениться, только в том случае если вы установите курсор в это поле, нажмете клавишу на клавиатуре. В противном случае поле всегда статично. не подскажете, в чем причина?

3. не совсем вопрос по теме, но в некоторых случаях также не отображается "направляющая" ползунка, а только передвигающая часть (бегунок).
стилизовал с учетом кроссбраузерности, но так и не могу понять, в чем причина. возможно, скажете, где копать?

Чтобы не искать код, дублирую:

$(function() {
      $('button.addMore').click(function() {
        $('div.roword').first()
            .clone()
            .appendTo($('#form'))
            .find('select').val('')
            .end()
            .find('divinput')
            .val(function(i) {
                return i == 4 ? ''
                    : this.type == 'range' ? this.min
                    : $(this).prev().attr('min')
            })
            .end()
            .find('a').click(function() {
                $(this).closest('.roword').remove()
            })
            .show()
    })

    $('#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 <= 2399)  v *= 1.1
            else if(w * h >= 2400 && w * h <= 3999) v *= 1.055
            else if(w * h >= 4000 && w * h <= 5399) v *= 1.03;
            else if(w * h >= 5400 && w * h <= 6399) v *= 1.0135;
            r.val(v.toFixed(0))
        }
    })

});

var orderInfo = $.map($('.roword'), function(e) { //вставляет значения из калькулятора в форму заказа

	var o = $(e).find('select,input'); //получить все элементы



	if(o.eq(3).val()) return o.eq(0).children(':selected').text() + ' ' + o.eq(1).val() + 'x' + o.eq(2).val() + ' ' + o.eq(3).val() //если был выбор

});

if(orderInfo.length) $('textarea#orderItems').val(orderInfo.join('\n'))


<div id="form" >
       <div class="roword">
           <div class="col-md-3 col-sm-6 col-xs-12 form-col-1">
               <select  form="send" name="type[]">
                    <option value="">Выберите цвет</option>
                   <option value="1.1">Зеленый</option>
                   <option value="1.4">Синий</option>
                   <option value="1.75">Красный</option>
               </select>
           </div>
           <div class="col-md-3 col-sm-6 col-xs-12 form-col-2">
               <input  form="send" type="range" min="40" max="200" name="height[]" value="40">
              
           </div>
           <div class="col-md-3 col-sm-6 col-xs-12 form-col-3">
               <input form="send" type="range" min="40" max="300" name="width[]" value="40"> <output>40</output>
           </div>
           <div class="col-md-2 col-sm-5 col-xs-10 form-col-4">
               <input class="myPrice" form="send" type="text" name="result[]">
           </div>
           <div class="col-md-1 col-sm-1 col-xs-2 form-col-5">
                <a style="display:none" class="close"></a>
           </div>

       <div class="clearfix"></div>
       </div>
   </div>
   <div class="clearfix addbutton"></div>
   <button class="addMore">Добавить еще</button>

Последний раз редактировалось ФедорН, 24.07.2017 в 14:31.
Ответить с цитированием