Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Подстановка значений в фору калькулятора (https://javascript.ru/forum/dom-window/71026-podstanovka-znachenijj-v-foru-kalkulyatora.html)

theRusih 20.10.2017 09:36

Подстановка значений в фору калькулятора
 
Люди добрые и умные, помогите разобраться с калькулятором.
На каком-то сайте нашел калькулятор натяжных потолков, ну понравился он мне... Не могу понять откуда подставляются значения для расчета?
На локалке(компьютере) в скрипте меняю значения на свои
var prods = {
              pongs: 540,
              polyplast: 480,
              msd: 100,
              descor: 770,
              clipso: 1580,
              cerutti: 1630,
              photo: 1890
            };

, все работает. Вставляю к себе на сайт, данные подставляются с сайта исходника.

Содержимое scriptcalc.js
//передача данных калькулятора форме 
function generateOutCalc(){
    // Площадь, м2
    $("#outCalc-area").val($('#calculator2-area').val());
    // Углы, шт
    $("#outCalc-angles").val($('#calculator2-angles').val());
    // Светильники, шт
    $("#outCalc-fixtures").val($('#calculator2-fixtures').val());
    // Люстры, шт
    $("#outCalc-chandeliers").val($('#calculator2-chandeliers').val());

    // Производитель
    if( $('#manufacturer_pongs').is(':checked') ){
      $("#outCalc-manufacturer").val($('label[for="manufacturer_pongs"]').text());
    }

    if( $('#manufacturer_polyplast').is(':checked') ){
      $("#outCalc-manufacturer").val($('label[for="manufacturer_polyplast"]').text());
    }

    if( $('#manufacturer_msd').is(':checked') ){
      $("#outCalc-manufacturer").val($('label[for="manufacturer_msd"]').text());
    }

    if( $('#manufacturer_descor').is(':checked') ){
      $("#outCalc-manufacturer").val($('label[for="manufacturer_descor"]').text());
    }

    if( $('#manufacturer_photo').is(':checked') ){
      $("#outCalc-manufacturer").val($('label[for="manufacturer_photo"]').text());
    }
    // Сумма
    $("#outCalc-price").val($(".output_price span").text()+" Руб.");
  }

var tablinks = document.querySelectorAll(".main-tab-link");
  if (tablinks.length > 0) {
    for (var i = 0; i < tablinks.length; ++i) {
      tablinks[i].addEventListener('click', function () {

        var link = this;
        var targetID = link.dataset.targettabid;
        var target = document.querySelector("[data-tabid=\"" + targetID + "\"]");
        var tabs = target.parentNode.childNodes;
        //console.log(link, targetID, target, target.parentNode);
        //console.log(tabs);
        if (targetID && target) {
          $(tabs).addClass('hidden');
          $(link).parent().children().removeClass('active');
          target.classList.remove('hidden');
          link.classList.add('active');
        }
      });
    }
  }



  $('#calculator2-area').click(function(){ $('.calcbutton').click(); generateOutCalc();}); // Добавил ITF
  $('#calculator2-angles').click(function(){ $('.calcbutton').click(); generateOutCalc();}); // Добавил ITF
  $('#calculator2-fixtures').click(function(){ $('.calcbutton').click(); generateOutCalc();}); // Добавил ITF
  $('#calculator2-chandeliers').click(function(){ $('.calcbutton').click(); generateOutCalc();}); // Добавил ITF

  $('#calculator2-area')  .bind('keyup mouseup', function () {
    $('.calcbutton').click(); generateOutCalc();          
  });
  $('#calculator2-angles')  .bind('keyup mouseup', function () {
   $('.calcbutton').click(); generateOutCalc();           
 });
  $('#calculator2-fixtures')  .bind('keyup mouseup', function () {
   $('.calcbutton').click(); generateOutCalc();          
 });
  $('#calculator2-chandeliers')  .bind('keyup mouseup', function () {
   $('.calcbutton').click(); generateOutCalc();           
 });




  $('#manufacturer_pongs').click(function(){ $('.calcbutton').click(); generateOutCalc();}); // Добавил ITF
  $('#manufacturer_polyplast').click(function(){ $('.calcbutton').click();generateOutCalc(); }); // Добавил ITF
  $('#manufacturer_msd').click(function(){ $('.calcbutton').click(); generateOutCalc();}); // Добавил ITF
  $('#manufacturer_descor').click(function(){ $('.calcbutton').click(); generateOutCalc();}); // Добавил ITF
  $('#manufacturer_photo').click(function(){ $('.calcbutton').click(); generateOutCalc();}); // Добавил ITF


  $('.calculator2-control').click(function () {

    var input = this.parentNode.querySelector('.calculator2-input');
    console.log(input);
    if (this.classList.contains('plus')) {
      input.value++;
    } else if (this.classList.contains('minus') && input.value > 0) {
      input.value--;
    }
    $('.calcbutton').click(); // Добавил ITF
    generateOutCalc();// Добавил ITF
  });

/*on calc*/
$(function () {

  var calcbutton = document.querySelector('.calcbutton');
  if (calcbutton) {

    var calcDiscount = document.querySelector('.calc-discount');

    $('.calcbutton').click(function () {
      $(".output_price_none").fadeIn(1000);
      $(".feedback_zamer").fadeIn(1000);
    });

    calcbutton.addEventListener('click', function () {
      var loc = $(location).attr('href') ;
      if (( loc == "" ) || (loc ==  "")){
           var prods = {
              pongs: 540,
              polyplast: 480,
              msd: 100,
              descor: 770,
              clipso: 1580,
              cerutti: 1630,
              photo: 1890
            };
      }
      else{
           var prods = {
              pongs: 540,
              polyplast: 480,
              msd: 100,
              descor: 770,
              clipso: 1580,
              cerutti: 1630,
              photo: 1890
            };
      }
     
      var corners = document.querySelector('input[name="angles"]').value;
      if (corners > 4) {

      if (( loc == "" ) || (loc ==  "")){
        var cornerprice = (corners - 4) * 180;
      }
      else{
        var cornerprice = (corners - 4) * 180;
      }

      }
      else {

        cornerprice = 0;
      }
      if (( loc == "" ) || (loc ==  "")){
      var lightprice = 280 * document.querySelector('input[name="fixtures"]').value;
      var lampprice = 430 * document.querySelector('input[name="chandeliers"]').value;
    }
    else{
      var lightprice = 280 * document.querySelector('input[name="fixtures"]').value;
      var lampprice = 430 * document.querySelector('input[name="chandeliers"]').value;
    }
      var prodprice = prods[document.querySelector('input[name="manufacturer"]:checked').value] * document.querySelector('input[name="area"]').value;

      var price = prodprice + cornerprice + lightprice + lampprice,
      span = document.querySelector('.output_price > span'),
      input = document.querySelector('.output_price > input');

      if (span) {

        span.innerHTML = price;
      }

      if (input) {

        input.value = price;
      }
      $('.personal_link.hidden').slideDown();
      updateDiscount(price);
    });
}


Файлы с которыми работает калькулятор:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js"></script>

 
<script type="text/javascript" src="js/scriptcalc.js"></script>
Самое интересное что в файле scriptcalc.js изменения сделанные мной работают локально а на сайте нет, даже если все удалить в этом файле, на сайте калькулятор работает со значениями с сайта исходника...

theRusih 20.10.2017 09:36

Вот код калькулятора:
<div style="" class="calculation calculation-prices item-text block flex">
  <h2>Калькулятор стоимости натяжных потолков с установкой</h2>
  <form class="flex" action="" method="post">
    <div class="calculation_block flex">
      <div class="manufacturer_block flex">
        <div class="item manufacturer">1.Производитель:</div>
        <div>
          <input type="radio" name="manufacturer" value="pongs" id="manufacturer_pongs">
          <label for="manufacturer_pongs">Pongs ПВХ (Германия)</label>
        </div>
       <!--  <div>
         <input type="radio" name="manufacturer" value="polyplast" id="manufacturer_polyplast">
         <label for="manufacturer_polyplast">Polyplast ПВХ (Бельгия)</label>
       </div> -->
        <div>
          <input type="radio" name="manufacturer" value="msd" id="manufacturer_msd" checked>
          <label for="manufacturer_msd">MSD ПВХ (Китай)</label>
        </div>
        <div>
          <input type="radio" name="manufacturer" value="descor" id="manufacturer_descor">
          <label for="manufacturer_descor">Descor Ткань (Германия)</label>
        </div>
        <div>
          <input type="radio" name="manufacturer" value="photo" id="manufacturer_photo">
          <label for="manufacturer_photo">Фотопечать</label>
        </div>
      </div>
      <div class="indent">
        <div class="item room">2.Помещение:</div>
        <div class="calculator2-input-wrapper clearfix">
          <label for="calculator2-area" class="calculator2-input-label">Площадь, м2</label>
          <div class="calculator2-control minus">−</div>
          <input type="number" value="0" min="0" name="area" id="calculator2-area" class="calculator2-input" required>
          <div class="calculator2-control plus">+</div>
        </div>
        <div class="calculator2-input-wrapper clearfix">
          <label for="calculator2-angles" class="calculator2-input-label">Углы, шт</label>
          <div class="calculator2-control minus">−</div>
          <input type="number" value="0" min="0" name="angles" id="calculator2-angles" class="calculator2-input" required>
          <div class="calculator2-control plus">+</div>
        </div>
      </div>
      <div class="indent">
        <div class="item lighting">3.Освещение:</div>
        <div class="calculator2-input-wrapper clearfix">
          <label for="calculator2-fixtures" class="calculator2-input-label">Светильники, шт</label>
          <div class="calculator2-control minus">−</div>
          <input type="number" value="0" min="0" name="fixtures" id="calculator2-fixtures" class="calculator2-input" required>
          <div class="calculator2-control plus">+</div>
        </div>
        <div class="calculator2-input-wrapper clearfix">
          <label for="calculator2-chandeliers" class="calculator2-input-label">Люстры, шт</label>
          <div class="calculator2-control minus">−</div>
          <input type="number" value="0" min="0" name="chandeliers" id="calculator2-chandeliers" class="calculator2-input" required>
          <div class="calculator2-control plus">+</div>
        </div>
      </div>
    </div>
    <div class="calcbutton button" style="display:none;">Стоимость потолка составит: (нажмите чтобы узнать)</div>
    <div class="output_price_none" style="display:none; text-align:center;">
      <div class="title_output"></div>
      <div class="output_price">
        <span>0</span> рублей
        <input name="price" value="0" type="text" style=" display: none">
      </div>
      <div>
       
          <h5 class="calc-prices-header" style="color:#58068e;"><span>Если введённые вами параметры верны,</span> то это окончательная стоимость натяжных потолков с установкой!</h5>
      </div>
    </div>
  </form>
</div>

ksa 20.10.2017 09:46

Цитата:

Сообщение от theRusih (Сообщение 467811)
var loc = $(location).attr('href') ;
      if (( loc == "" ) || (loc ==  "")){
           var prods = {
              pongs: 540,
              polyplast: 480,
              msd: 100,
              descor: 770,
              clipso: 1580,
              cerutti: 1630,
              photo: 1890
            };
      }
      else{
           var prods = {
              pongs: 540,
              polyplast: 480,
              msd: 100,
              descor: 770,
              clipso: 1580,
              cerutti: 1630,
              photo: 1890
            };
      }

Зачем это масло масляное? :blink:

ksa 20.10.2017 09:47

Цитата:

Сообщение от theRusih
Вставляю к себе на сайт, данные подставляются с сайта исходника.

Значит где-то меняются значения того объекта...

theRusih 20.10.2017 10:22

Цитата:

Сообщение от ksa (Сообщение 467814)
Зачем это масло масляное? :blink:

Я не знаю, так в исходнике есть. Я сильный чайник в этом...:cray:

theRusih 20.10.2017 10:26

Цитата:

Сообщение от ksa (Сообщение 467815)
Значит где-то меняются значения того объекта...

Куда смотреть, подскажите. я думал в коде калькулятора самого, но там и намека на ссылку нету. Что интересно на хостинге работает калк с пустым файлом scriptcalc.js но удалив его, перестает работать???:-E

ksa 20.10.2017 10:30

theRusih, у нас есть раздел "Работа", предложите некую сумму за решение вашей проблемы, может и желающие помочь вам найдется... ;)

theRusih 20.10.2017 10:33

Вложений: 1
Вот файлы:


Часовой пояс GMT +3, время: 23:02.