Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 29.10.2017, 16:28
Профессор
Отправить личное сообщение для the_little Посмотреть профиль Найти все сообщения от the_little
 
Регистрация: 25.09.2017
Сообщений: 186

По другому не вижу как...
Фактически так уже реализовал.

HTML
<textarea name="outtext" id="outtext"></textarea>

Для проверки пока только с теми переменными, что уже есть
JS
document.getElementById("outtext").value = 
    (
        "Стоимость пленки: " + sp +
        "\nСтоимость проектора: " + pp +
        "\nСтоимость лазера: " + lp +
        "\nСтоимость WUXGA: " + w +
        "\nИсточник: " + ip +
        "\nКоммутация: " + cp +
        "\nКрепление: " + kp +
        "\nМонтаж: " + m
    );

PHP
$outtext = $_POST['outtext'];

$mail->Body    = "$outtext"; // Текст письма


И все отлично отправляется на почту. Только есть одна проблема.

В textarea текст переносится на новую строчку.
При отправке на почту - переносы не учитываются и информация приходит одной строкой, что не совсем читабельно...
Ответить с цитированием
  #12 (permalink)  
Старый 29.10.2017, 16:29
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Что значит "Монтаж: " + m?
Ответить с цитированием
  #13 (permalink)  
Старый 29.10.2017, 16:33
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от the_little
При отправке на почту - переносы не учитываются и информация приходит одной строкой, что не совсем читабельно...
Потому, что html игнорирует переводы строк, в html перевод это <br>. А истинные джентльмены отправляют почту двумя ее копиями в одном письме, одна это html-версия, вторая как текст. Вы откуда можете знать какие версии писем предпочитает получать адресат, если только он об этом не сообщает? А не зная этого, слать ему html версию, это самоуверенность, а пользователь такое письмо может видеть как мусор.
Ответить с цитированием
  #14 (permalink)  
Старый 29.10.2017, 16:35
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от the_little
По другому не вижу как...
Это потому, что у вас нет понятий об организации данных на сервере и что данные извне сервер обязан проверять.
Ответить с цитированием
  #15 (permalink)  
Старый 29.10.2017, 16:46
Профессор
Отправить личное сообщение для the_little Посмотреть профиль Найти все сообщения от the_little
 
Регистрация: 25.09.2017
Сообщений: 186

Сообщение от laimas Посмотреть сообщение
Что значит "Монтаж: " + m?
После заполнения формы пользователь видит расчет стоимости оборудования.

На почту он получит
список оборудования с его стоимостью.

В конкретном случае стоимость монтажа.
Только я сделаю переменные, которые переведут value 1 2 3 в текстовый вид, Например возвращаясь к тому же монтажу
Будет написано например так:

Монтаж под ключ в Москве или Московской области.
Стоимость монтажа - 20000р.
Ну и далее...
Тип проектора - Ламповый "День".
Стоимость проектора - 120000р.
Общая стоимость 140000р.
Ответить с цитированием
  #16 (permalink)  
Старый 29.10.2017, 16:47
Профессор
Отправить личное сообщение для the_little Посмотреть профиль Найти все сообщения от the_little
 
Регистрация: 25.09.2017
Сообщений: 186

Сообщение от laimas Посмотреть сообщение
Это потому, что у вас нет понятий об организации данных на сервере и что данные извне сервер обязан проверять.
Тут не поспоришь...
Я совсем недавно начал изучать Javascript.
Ну и познаний серверной части у меня тоже нет...
Ответить с цитированием
  #17 (permalink)  
Старый 29.10.2017, 16:50
Профессор
Отправить личное сообщение для the_little Посмотреть профиль Найти все сообщения от the_little
 
Регистрация: 25.09.2017
Сообщений: 186

Сообщение от laimas Посмотреть сообщение
Потому, что html игнорирует переводы строк, в html перевод это <br>. А истинные джентльмены отправляют почту двумя ее копиями в одном письме, одна это html-версия, вторая как текст. Вы откуда можете знать какие версии писем предпочитает получать адресат, если только он об этом не сообщает? А не зная этого, слать ему html версию, это самоуверенность, а пользователь такое письмо может видеть как мусор.
Если честно я об этом даже не задумывался.
Я использую достаточно известный и распространенный PHPMailer, который как я понимаю должен заботиться о таких вещах и отправлять любыми джентльменскими способами...
Ответить с цитированием
  #18 (permalink)  
Старый 29.10.2017, 17:07
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от the_little
В конкретном случае стоимость монтажа.
Ну если стоимость монтажа, то почему в тело письма вставляется на "Монтаж: 20000 руб.", "Монтаж: m"?

Ваш подход к тому, что вы делаете, по крайней мере то, что показано здесь, это идти по пути "кажущегося" наименьшего сопротивления.

Это кроет в себе массу проблем в будущем, с которыми вы еще столкнетесь.
Ответить с цитированием
  #19 (permalink)  
Старый 29.10.2017, 17:17
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от the_little
Я использую достаточно известный и распространенный PHPMailer, который как я понимаю должен заботиться о таких вещах
Этот класс просто отправляет почту которую формируете вы, вы же определяете настройки класса, в том числе и тип почтового отправления. В сети этот класс описан, найдите и ознакомтесь с ним.
Ответить с цитированием
  #20 (permalink)  
Старый 29.10.2017, 18:02
Профессор
Отправить личное сообщение для the_little Посмотреть профиль Найти все сообщения от the_little
 
Регистрация: 25.09.2017
Сообщений: 186

Сообщение от laimas Посмотреть сообщение
Ну если стоимость монтажа, то почему в тело письма вставляется на "Монтаж: 20000 руб.", "Монтаж: m"?

Ваш подход к тому, что вы делаете, по крайней мере то, что показано здесь, это идти по пути "кажущегося" наименьшего сопротивления.

Это кроет в себе массу проблем в будущем, с которыми вы еще столкнетесь.
Так эта величина 20000 руб. считается в калькуляторе. В зависимости от выбранных полей пользователем. Если бы я ее заранее знал - я бы ее и отправил)

function check() {
    // Определяем выбранный бюджет
    var inp = document.getElementsByName('budjet');
    for (var i = 0; i < inp.length; i++) {
        if (inp[i].type == "radio" && inp[i].checked) {
            var b = inp[i].value;
        }
    }

    // Определяем выбранный размер
    var selsize = document.getElementById("size"); // Получаем наш список
	var size = selsize.options[selsize.selectedIndex].value;

    // Определяем выбранный тип проектора
    var selprojsm = document.getElementById("proj_sm"); // Получаем наш список
    var psmt = selprojsm.options[selprojsm.selectedIndex].value;

    var selprojmid = document.getElementById("proj_mid"); // Получаем наш список
    var pmidt = selprojmid.options[selprojmid.selectedIndex].value;

    var selprojlg = document.getElementById("proj_lg"); // Получаем наш список
    var plgt = selprojlg.options[selprojlg.selectedIndex].value;

    var arrsp = [
        [ 0, 0, 0],                 // Размер не выбран
        [ 3500, 11000, 90000],      // Размер 1500х1000 мм
        [ 7000, 22000, 120000],     // Размер 2000х1500 мм
        [ 15000, 44000, 360000]     // Размер 3000х2200 мм
    ];

    var sp = arrsp[size][b];

    var arrpp = [
        [ 0, 0, 0, 0],                  // Размер не выбран
        [ 0, 35000, 80000, 130000],     // Размер 1500х1000 мм
        [ 0, 80000, 160000, 250000],    // Размер 2000х1500 мм
        [ 0, 130000, 250000, 370000]    // Размер 3000х2200 мм
    ];

    if (size == 1) {
        var pp = arrpp[size][psmt];
    }
    if (size == 2) {
        var pp = arrpp[size][pmidt];
    }
    if (size == 3) {
        var pp = arrpp[size][plgt];
    }
    if (size == 0) {
        var pp = 0;
    }

    // Определяем выбран ли лазерный проектор
    var laz = document.getElementsByName('lazer');
    for (var i = 0; i < laz.length; i++) {
        if (laz[i].type == "radio" && laz[i].checked) {
            var l = laz[i].value;
        }
    }

    var arrlp = [
        [ 0, 0, 0, 0],                  // Размер не выбран
        [ 0, 200000, 400000, 800000],     // Размер 1500х1000 мм
        [ 0, 200000, 400000, 1300000],    // Размер 2000х1500 мм
        [ 0, 400000, 800000, 1600000]    // Размер 3000х2200 мм
    ];


    if ( l == 1 ) {
        if (size == 1) {
            var lp = arrlp[size][psmt];
        }
        if (size == 2) {
            var lp = arrlp[size][pmidt];
        }
        if (size == 3) {
            var lp = arrlp[size][plgt];
        }
    } else {
        lp = 0;
    }

    var wuxga=document.getElementsByName('wuxga').item(0).checked;

    if ( wuxga == true ) {
        var w = (pp + lp)/100*30;
    } else {
        var w = 0;
    }
    
    var istoc = document.getElementsByName('istochnik');
    for (var i = 0; i < istoc.length; i++) {
        if (istoc[i].type == "radio" && istoc[i].checked) {
            var ips = istoc[i].value;
        }
    }

    if ( ips == 1) {
        var ip = 4000; 
    }
    if ( ips == 2) {
        var ip = 20000; 
    }
    if ( ips == 3) {
        var ip = 60000; 
    }

    var commut=document.getElementsByName('commut').item(0).checked;

    if ( commut == true ) {
        var cp = 10000;
    } else {
        var cp = 0;
    }

    var arrminrast = [                // Расстояние минимальное
        [ 0, 0, 0, 0],                // Размер не выбран
        [ 0, 4000, 4000, 12000],      // Размер 1500х1000 мм
        [ 0, 4000, 12000, 12000],     // Размер 2000х1500 мм
        [ 0, 12000, 12000, 12000]     // Размер 3000х2200 мм
    ];

    var arrsredrast = [               // Расстояние 500-1000
        [ 0, 0, 0, 0],                // Размер не выбран
        [ 0, 6000, 6000, 16000],      // Размер 1500х1000 мм
        [ 0, 6000, 16000, 16000],     // Размер 2000х1500 мм
        [ 0, 16000, 16000, 16000]     // Размер 3000х2200 мм
    ];

    var arrmaxrast = [                // Расстояние более 1000
        [ 0, 0, 0, 0],                // Размер не выбран
        [ 0, 10000, 10000, 20000],    // Размер 1500х1000 мм
        [ 0, 10000, 20000, 20000],    // Размер 2000х1500 мм
        [ 0, 20000, 20000, 20000]     // Размер 3000х2200 мм
    ];

    var selrast = document.getElementById("krep"); // Получаем наш список
    var krep = selrast.options[selrast.selectedIndex].value;

    if ( krep == 1 ) {
        if ( size == 1 ) {
            var kp = arrminrast[size][psmt];
        }
        if ( size == 2 ) {
            var kp = arrminrast[size][pmidt];
        }
        if ( size == 3 ) {
            var kp = arrminrast[size][plgt];
        }
        if ( size == 0 ) {
            var kp = 0;
        }
    }
    if ( krep == 2 ) {
        if ( size == 1 ) {
            var kp = arrsredrast[size][psmt];
        }
        if ( size == 2 ) {
            var kp = arrsredrast[size][pmidt];
        }
        if ( size == 3 ) {
            var kp = arrsredrast[size][plgt];
        }
        if ( size == 0 ) {
            var kp = 0;
        }
    }
    if ( krep == 3 ) {
        if ( size == 1 ) {
            var kp = arrmaxrast[size][psmt];
        }
        if ( size == 2 ) {
            var kp = arrmaxrast[size][pmidt];
        }
        if ( size == 3 ) {
            var kp = arrmaxrast[size][plgt];
        }
        if ( size == 0 ) {
            var kp = 0;
        }
    }

    var psumm = sp + pp + lp + w + ip + cp + kp;
    document.getElementById("price_oborud").innerHTML = psumm;
    
    var arrchefmo = [                 // Шеф Монтаж Москва Московская область
        [ 0, 0, 0, 0],                // Размер не выбран
        [ 0, 20000, 20000, 25000],    // Размер 1500х1000 мм
        [ 0, 20000, 25000, 25000],    // Размер 2000х1500 мм
        [ 0, 25000, 25000, 25000]     // Размер 3000х2200 мм
    ];

    var arrskeymo = [                 // Монтажные работы под ключ Москва и МО
        [ 0, 0, 0, 0],                // Размер не выбран
        [ 0, 32000, 32000, 45000],    // Размер 1500х1000 мм
        [ 0, 32000, 45000, 45000],    // Размер 2000х1500 мм
        [ 0, 45000, 45000, 45000]     // Размер 3000х2200 мм
    ];

    var arrchefsng = [                // Шеф Монтаж Россия и СНГ
        [ 0, 0, 0, 0],                // Размер не выбран
        [ 0, 47000, 47000, 57000],    // Размер 1500х1000 мм
        [ 0, 47000, 57000, 57000],    // Размер 2000х1500 мм
        [ 0, 57000, 57000, 57000]     // Размер 3000х2200 мм
    ];

    var arrkeysng = [                 // Монтажные работы под ключ Россия и СНГ
        [ 0, 0, 0, 0],                // Размер не выбран
        [ 0, 69000, 69000, 79000],    // Размер 1500х1000 мм
        [ 0, 69000, 79000, 79000],    // Размер 2000х1500 мм
        [ 0, 79000, 79000, 79000]     // Размер 3000х2200 мм
    ];

    var montaj = document.getElementsByName('works');
    for (var i = 0; i < montaj.length; i++) {
        if (montaj[i].type == "radio" && montaj[i].checked) {
            var mont = montaj[i].value;
        }
    }

    if ( mont == 1 ) {
        if ( size == 1 ) {
            var m = arrchefmo[size][psmt];
        }
        if ( size == 2 ) {
            var m = arrchefmo[size][pmidt];
        }
        if ( size == 3 ) {
            var m = arrchefmo[size][plgt];
        }
        if ( size == 0 ) {
            var m = 0;
        }
    }
    if ( mont == 2 ) {
        if ( size == 1 ) {
            var m = arrskeymo[size][psmt];
        }
        if ( size == 2 ) {
            var m = arrskeymo[size][pmidt];
        }
        if ( size == 3 ) {
            var m = arrskeymo[size][plgt];
        }
        if ( size == 0 ) {
            var m = 0;
        }
    }
    if ( mont == 3 ) {
        if ( size == 1 ) {
            var m = arrchefsng[size][psmt];
        }
        if ( size == 2 ) {
            var m = arrchefsng[size][pmidt];
        }
        if ( size == 3 ) {
            var m = arrchefsng[size][plgt];
        }
        if ( size == 0 ) {
            var m = 0;
        }
    }
    if ( mont == 4 ) {
        if ( size == 1 ) {
            var m = arrkeysng[size][psmt];
        }
        if ( size == 2 ) {
            var m = arrkeysng[size][pmidt];
        }
        if ( size == 3 ) {
            var m = arrkeysng[size][plgt];
        }
        if ( size == 0 ) {
            var m = 0;
        }
    }

    var summ = psumm + m;
    document.getElementById("summ").innerHTML = summ;

    document.getElementById("check-sp").innerHTML = sp;
    document.getElementById("check-pp").innerHTML = pp;
    document.getElementById("check-lp").innerHTML = lp;
    document.getElementById("check-w").innerHTML = w;
    document.getElementById("check-ip").innerHTML = ip;
    document.getElementById("check-cp").innerHTML = cp;
    document.getElementById("check-kp").innerHTML = kp;
    document.getElementById("check-m").innerHTML = m;


    document.getElementById("outtext").value = 
    (
        "Стоимость пленки: " + sp +
        "\nСтоимость проектора: " + pp +
        "\nСтоимость лазера: " + lp +
        "\nСтоимость WUXGA: " + w +
        "\nИсточник: " + ip +
        "\nКоммутация: " + cp +
        "\nКрепление: " + kp +
        "\nМонтаж: " + m
    );

}
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
jQuery - Конфликт функций при отправке формы по ajax Belka AJAX и COMET 5 20.06.2015 02:15
плавный скролинг при нажатии кнопки на форме sones Элементы интерфейса 14 23.03.2015 20:32
изменение значения input при смене значения select galart jQuery 4 30.01.2015 19:39
Onchange при изменении значения из скрипта. abstract Events/DOM/Window 9 01.03.2011 23:10
При отправке POST-запроса в заголовке к серверу вместо POST указывается OPTIONS VasiliyLuka AJAX и COMET 1 14.12.2009 14:57