Jump to content
  • 0

небольшая работа по JS - доделать форму размещения (подсчет стоимости)


biper
 Share

Question

в форме размещения объявления пытаюсь вывести

1. количество знаков в объявлении,
2. стоимость одного объявления (= стоимости одного знака, в зависимости от выбранного типа объявления * количество знаков), 
3. общую сумму заказа (= количество публикаций (выбирается из календаря) * стоимость одного объявления -
скидка в 7% если выбрано 4 или более публикаций) 
4. Размер скидки в рублях (= 7% от суммы заказа)

количество знаков подсчитывает, в отдельный див вывел без труда... есть уже календарь, который даты публикации передает...  Дальше почему то затык...что делаю не так? не могу посчитать и вывести ....
5. Кроме того, нужно в поле «Текст объявления», заполняемого пользователем… выводить внешний вид
объявления –  т. е.  Class для div внешний вид для текста объявления, набираемого пользователем в
соответствующем поле должен меняться в зависимости от выбранного типа объявления. Т.е. если выбран тип выделение полем, то текст должен с помощью стиля отображаться с фоновым цветом вокруг текста, если выбран тип «в рамке» - текст должен отображаться внутри рамки

Окончательно расписался в собственной безграмотности :( и готов оплатить работу знающего человека. Оплата по факту на карточку или еще куда. Интересует на этом этапе  цена вопроса 

Саму страничку можно посмотреть по адресу http://modx.biper3fo.bget.ru/prajs-list.htmlна вкладке "РАЗМЕЩЕНИЕ СТРОЧНЫХ ОБЪЯВЛЕНИЙ"


код странички - все вместе, со скриптом..

 

<div id="respond">

<form method="post" action="[~[*id*]~]">

<input type="hidden" name="formid" value="contact-form" />

<img src="/image/shadow.png" alt="тень" "width="100%" ">

<h2>электронная форма размещения объявлений</h2><hr>

<p><b>Для уточнения возникших у Вас вопросов и для консультации Вы можете связаться с сотрудником редакции по многоканальному телефону, указанному в шапке сайта или воспользоваться офлайн контактной формой "Перезвоним" в правом нижнем углу экрана</b></p>

<hr>

    <div class="col-sm-6">

        <p><label accesskey="n" for="name">Ваше имя (например "Александр Иванов")</label>

    </div>

    <div class="col-sm-6">

       <input type="text" name="name" size="50%" maxlength="100%" eform="Имя::1" /></p>

    </div>

    <div class="col-sm-6">

       <p><label accesskey="e" for="email">Адрес Вашей электронной почты  (например "post@mail.ru")</label>

    </div>

    <div class="col-sm-6">

       <input type="text" name="email" size="50%" maxlength="100%" eform="Адрес электронной почты:email:1" /></p>

    </div>

    <div class="col-sm-6">

       <p><label accesskey="p" for="phone">Ваш мобильный телефон (на сайте не публикуется). Необходим для того, чтобы идентифицировать Ваш заказ. Этот же номер Вам понадобится при оплате услуги на терминале. (например "8 929 001 22 34")</label>

    </div>

    <div class="col-sm-6">

       <input type="text" name="phone" size="50%" maxlength="100%" eform="Ваш мобильный телефон::1" /></p>

    </div>

    <div class="col-sm-6">

        <p><label accesskey="s" for="otdel">Выберите раздел газеты</label>

    </div>

    <div class="col-sm-6">

        <select name="otdel" >


        <option value="&&& Недвижимость">Объявление в раздел Недвижимость</option>

        <option value="&&& Дачное строительство">Объявление в раздел Дачное строительство</option>

        <option value="&&& Ремонт квартир">Объявление в раздел Ремонт квартир</option>

        <option value="&&& Балконы, окна">Объявление в раздел Балконы, окна</option>

        <option value="&&&Электротехнические работы">Объявление в раздел Электротехнические работы </option>

        <option value="&&& Сантехника">Объявление в раздел Сантехника</option>

        <option value="&&& Двери, металлоконструкции">Объявление в раздел Двери, металлоконструкции</option>

        <option value="&&& Замки">Объявление в раздел Замки</option>

        <option value="&&& Межкомнатные двери">Объявление в раздел Межкомнатные двери</option>

        <option value="&&& Мебель, интерьер">Объявление в раздел Мебель, интерьер</option>

        <option value="&&& Ремонт бытовой техники">Объявление в раздел Ремонт бытовой техники</option>

        <option value="&&& Ремонт компьютеров">Объявление в раздел Ремонт компьютеров</option>

        <option value="&&& Ремонт телевизоров">Объявление в раздел Ремонт телевизоров</option>

        <option value="&&& Антенны">Объявление в раздел Антенны</option>

        <option value="&&& Грузоперевозки">Объявление в раздел Грузоперевозки</option>

        <option value="&&& Куплю">Объявление в раздел Куплю</option>

        <option value="&&& Продаю">Объявление в раздел Продаю </option>

        <option value="&&& Займы">Объявление в раздел Займы</option>

        <option value="&&& Разное">Объявление в раздел Разное</option>

        <option value="&&& Ветеринарные услуги">Объявление в раздел Ветеринарные услуги</option>

        <option value="&&& Ритуальные услуги">Объявление в раздел Ритуальные услуги</option>

        <option value="&&& Брачные знакомства">Объявление в раздел Брачные знакомства</option>

        <option value="&&& Магия">Объявление в раздел Магия</option>

        <option value="&&& Вакансии">Объявление в раздел Вакансии</option>

        <option value="&&& Услуги автомобилистам">Объявление в раздел Услуги автомобилистам</option>

        <option value="&&& Выкуп авто">Объявление в раздел Выкуп авто</option>

        <option value="&&& Химчистка">Объявление в раздел Химчистка</option>

        <option value="&&& Клининг">Объявление в раздел Клининг</option>

        <option value="&&& Вывоз мусора">Объявление в раздел Вывоз мусора</option>

        <option value="&&& Дезинсекция">Объявление в раздел Дезинсекция</option>

        <option value="&&& Организация праздника">Объявление в раздел Организация праздника</option>

        <option value="&&& Салон красоты">Объявление в раздел Салон красоты</option>

        <option value="&&& Арена Путешествий">Объявление в раздел Арена Путешествий</option>

        </select></p>


    </div>

    <div class="col-sm-6">

    <label accesskey="t" for="type">Выберите тип публикации</type>

        <select name="type" id="type" onchange="changePrice()">

            <option value="без выделения">без выделения</option>

            <option value="выделение фоном">с фоном</option>

            <option value="объявление в рамке">в рамке</option>

        </select>

    </label>

    </div>

    <div class="col-sm-6">

        <p><label accesskey="c" for="comments">Наберите текст объявления,- так, как он должен будет выглядеть в газете (для экономии денег :) 

        возможны сокращения. Обязательно укажите контактный телефон (который может отличаться от указанного выше.) Например "Мет. двери, реш., ворота. Т. 414-74-66")</label>

        <br/></p>

       <h2>Ваше объявление в газете будет выглядеть так:</h2> 

<!--в поле «Текст объявления», заполняемого пользователем… нужно выводить внешний вид объявления –  т. е. текст, введенный 

пользователем в поле «текст объявления» должен отображаться с тем оформлением CSS-стиля который задан полем «тип выделения 

публикации»-->

        <div class="(type_aa)" style="font-size: 14px; color:gray;"> 


        <textarea cols="50" rows="10" name="comments" eform="Текст объявления:html:1" onkeyup="symbols(this)" onkeydown="symbols(this)" onkeyup="changePrice()" 

        onkeydown="changePrice()" id="textarea"></textarea></p>

        </div>     


<!-- количество знаков в объявлении -->

           <div id="symbols"></div> 

<!--стоимость одной публикации объявления в рублях (-->

           <div id="price">Стоимость одной публикации объявления в рублях</div> 

<!-- общая стоимость заказа  в рублях -->           

            <div id="resultat">Стоимость заказа в рублях</div> 

<!-- скидка в рублях -->

           <div id="skidka">Размер скидки в рублях</div>     

<div> 






</div> 

    </div> 

    <div class="col-sm-6">


<!--    дата публикации должна отображаться под конкретные даты корректировка. Должен выводить календарную сетку на текущий год, начиная с текущего месяца, 

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

        исключения, когда в определенные указанные дни даты переносятся-->     


        <p><label accesskey="dat" for="dat">Дата выхода номера газеты, в котором Вы можете разместить свое объявление - среда, выделена в календаре подчеркиванием. 

        Окончание приема рекламы в номер - 15-00 вторника той же недели. Выберите в календаре желаемую дату выхода (можно выбрать несколько номеров, при этом 

        автоматически просчитанную стоимость Вашего объявления нужно будет умножить на количество публикаций)

        </label></p>


    </div>

    <div class="col-sm-6">

        <input type="text" name="dat" size="50%" maxlength="100%" eform="Дата публикации::1" id="dt"/></p>

    </div>

    <div class="col-sm-12">[[calendar]]</div>

    <img src="/image/shadow.png" alt="тень" "width="100%" ">

    <div class="col-sm-12">

        <div class="col-sm-3">

            <p><input type="submit" name="submit" id="submit" class="btn btn-primary" value="Разместить объявление"></p>

        </div>

        <div class="col-sm-6">

            <p><i>Нажимая на кнопку "Разместить объявление", Вы подтверждаете согласие с правилами, указанными в разделе 

            <a href="http://arena-rv.ru/politika-konfidenczialnosti-sajta-arena.html">"Политика конфиденциальности сайта "Арена"</a> и даете согласие на обработку персональных данных, переданных 

            Вами при размещении Вашего объявления</i></p>

        </div>    

    </div>

</form>

<script type="text/javascript">

     function symbols() {

      var symbols = textarea.value.length;

      document.getElementById('symbols').innerHTML =

      'В Вашем объявлении <span class="red" style="font-size: 14px; color:red;">' + symbols + '</span> знаков.';

      }


     function changePrice() {

      var price = document.getElementById('price');

      var textarea = document.getElementById('textarea');

      var pricei = document.getElementById('pricei');

      var resultat = document.getElementById('resultat');

      var skidka = document.getElementById('skidka');


        if(type.value == 'простое') cena = 18;

        else if(type.value == 'с фоном') cena = 19;

        else cena = 24;


        price.innerHTML = cena * textarea.value.length;

        pricei.value = cena * textarea.value.length;



        document.getElementById('price').innerHTML =

      'стоимость одной публикации' + price + 'руб.';




     }


    var dt = document.getElementById('dt');


    function setDate(d){

     dt.value += (dt.value == '') ? d : ', '+d;

    }

    function init() {

        if (arguments.callee.done) return;

        arguments.callee.done = true;

        changePrice();

     }


    // ff, opera

    if (document.addEventListener) {

        document.addEventListener("DOMContentLoaded", init, false);

     }


    // ie

    /*@cc_on @*/

    /*@if (@_win32)

    document.write("<script id=__ie_onload defer src=javascript:void(0)>");

    document.write("<\/script>");

    var script = document.getElementById("__ie_onload");

    script.onreadystatechange = function() {

        if (this.readyState == "complete") {

            init();

     }

    };

    /*@end @*/


    // safari

    if (/WebKit/i.test(navigator.userAgent)) {

        var _timer = setInterval(function() {

            if (/loaded|complete/.test(document.readyState)) {

                clearInterval(_timer);

                delete _timer;

                init();

         }

        }, 10);

    }


    // others

    window.onload = init;


</script>

 

Link to comment
Share on other sites

1 answer to this question

Recommended Posts

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

  • Similar Content

    • By ilya1203
      Прошу помочь с заданием:
      Написать файл скрипта, который генерирует три числа, соответствующие значениям высоты, длины и ширины комнаты. Отобразить в консоли:
      a.Площадь стен комнаты
      b.Объём комнаты
      c.*Объём комнаты за вычетом случайно сгенерированного количества чисел, которые определяет объёмы случайно зашедших в комнату людей.
      (в итоге запустит скрипт последством консоли)
      (заранее огромное спасибо)
    • By Yurich
      Всем привет, у меня такой вот вопрос, делаю сайт через react и при изменении расширения что-то идёт не так и какой-то бред получается, подскажите как решить данную проблему. Я вообще не понимаю из-за чего это происходит, по этому не могу нормально объяснить 😅.

    • By bromble
      Всем привет!
      Может ли кто-нибудь сказать как реализована такая каруселька у элементов каталога?
      MyVideo_55.mp4
    • By IsayR
      Всем привет! Подскажите, пожалуйста, как правильно сделать раскрывающиеся блоки со скрытым содержанием внутри? У меня в принципе все работает, блок открывается и закрывается, НО если я нажимаю на блок, а не на стрелочку, она у меня остается в таком же положении(а она должна у меня меняться, когда блок открывается), и получается куча мала, и выглядит это не очень презентабельно. Подскажите, пожалуйста!
      <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <div class="wrapper-div"> <div class="div"> <div class="window-one"> <h3 class="title"> Заголовок 1 </h3> <div class="arrow-test"></div> </div> <div class="window-two"> <div class="text">Текст 1</div> </div> </div> </div> <div class="wrapper-div"> <div class="div"> <div class="window-one"> <h3 class="title"> Заголовок 2 </h3> <div class="arrow-test"></div> </div> <div class="window-two"> <div class="text">Текст 2</div> </div> </div> </div> <div class="wrapper-div"> <div class="div"> <div class="window-one"> <h3 class="title"> Заголовок 3 </h3> <div class="arrow-test"></div> </div> <div class="window-two"> <div class="text">Текст 3</div> </div> </div> </div> .div{ border: 1px solid #3A444E; border-radius: 10px; width: 300px; height: 64px; overflow: hidden; } .div.open { height: auto; background: #000; color: #fff; } .window-one { display: flex; align-items: center; justify-content: space-between; } .title { margin-bottom: 20px; } .arrow-test { content: ''; background: url('http://cdn.onlinewebfonts.com/svg/img_387044.png') no-repeat center center / 100%; width: 30px; height: 30px; cursor: pointer; } .arrow-test.open { content: ''; background: url('https://upload.wikimedia.org/wikipedia/commons/thumb/d/dd/Eo_circle_yellow_arrow-up.svg/1024px-Eo_circle_yellow_arrow-up.svg.png') no-repeat center center / 100%; width: 30px; height: 30px; cursor: pointer; } $('.div, .arrow-test').click( function(){ $(this).toggleClass('open')});  
    • By IsayR
      Всем привет, подскажите, пожалуйста, как сделать так, чтобы форма открывалась при нажатии на кнопку, которой на странице находится несколько штук? У меня есть кнопка и несколько ее копий на странице, и я хочу, чтобы если пользователь захотел нажать на кнопку, только на другом месте страницы, открывалась та же самая форма. Но, к сожалению, ее открывает, только самая первая кнопка, подскажите, пожалуйста, решение! Спасибо!
      <body> <button class="btn-modal" id="open">Отправить заявку</button> <button class="btn-modal" id="open">Отправить заявку</button> <button class="btn-modal" id="open">Отправить заявку</button> <div class="wrapper-modal" id="wrapperModal"> <div class="overlay-modal" id="overlayModal"></div> <div class="form-modal__item" id="formModal"> <form action="#" id="formModalBody" class="form-modal__body"> <h4 class="form-modal__title"> Оставьте заявку </h4> <span class="close" id="close"> <div class="form-modal__item"> <label for="formName" class="form-modal__label"> Имя: </label> <input id="formName" type="text" name="name" class="form-modal__input" placeholder="Ваше имя *"> </div> <div class="form-modal__item"> <label for="formTel" class="form-modal__label"> Номер телефона: </label> <input id="formTel" type="tel" name="length" class="form-modal__input" placeholder="+7 (___) ___ - __ - __ *"> </div> <div class="form-modal__item"> <label for="formEmail" class="form-modal__label"> Email: </label> <input id="formEmail" type="text" name="width" class="form-modal__input" placeholder="Введите e-mail *"> </div> <button class="form-modal__button" id="open">Отправить</button> </form> </div> </div> </body> #wrapperModal { display: none; position: fixed; width: 100%; height: 100%; z-index: 3; top: 8%; left: 20%; } #wrapperModal.active { display: block; } #overlayModal { position: absolute; top: -8%; left: -20%; width: 100%; height: 100%; z-index: 0; background-color: grey; opacity: 0.5; } .form-modal__body { width: 270px; min-height: 200px; background: #363A4D; border-radius: 20px; padding: 48px 51px 41px 50px; position: relative; } .form-modal__title { font-size: 24px; margin-bottom: 23px; } .close:before, .close:after { position: absolute; content: ' '; right: 28px; top: 16px; height: 18px; width: 2px; background-color: #7E839A; cursor: pointer; border-radius: 5px; } .close:before { transform: rotate(45deg); } .close:after { transform: rotate(-45deg); } .form-modal__label { margin-bottom: 6px; } const btnForm = document.getElementById('open'); const modal = document.getElementById('wrapperModal'); const overlay = document.getElementById('overlayModal'); const close = document.getElementById('close'); btnForm.addEventListener('click', (e) => { e.preventDefault() modal.classList.add('active'); }); const closeModal = () => { modal.classList.remove('active'); } overlay.addEventListener('click',closeModal); close.addEventListener('click',closeModal);  
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy