1. Гость, мы просим Вас ознакомиться с Правилами Форума и Отказом от ответственности!

Подсчет стоимости товара

Тема в разделе 'Javascript и JQuery', создана пользователем mr.Slink, 23 окт 2012.

  1. TopicStarter Overlay

    mr.Slink Пользователи

    Сообщения:
    261
    Лайки:
    92
    Пол:
    Мужской
    Репутация:
    0
    Команда:
    odoRemasrered
    Страна:
    Russian Federation Russian Federation
    Требуется ваша помощь. Нужен скрипт.

    И так. Я делаю небольшой "магазин". Необходимо чтобы человек не смог купить на сумму более 25 рублей. Товары на сайте выбираются по checkbox ам.

    Пример:
    Товар #1 - 15руб | Товар #2 - 15руб | Товар #3 - 15руб |
    Товар #4 - 15руб | Товар #5 - 15руб | Товар #6 - 15руб |
    Товар #7 - 10руб | Товар #8 - 10руб | Товар #9 - 10руб |
    Товар #10 - 5руб | Товар #11 - 5руб | Товар #12 - 5руб |

    Код должен запретить пользователю выбрать товаров на сумму больше 25 рублей.
    При этом есть select, в котором есть выбор максимальной суммы... и последнее без лимита

    Код:
    <div id=content>
    <form>
    <input name="15" type="checkbox">15 рублей</input>
    <input name="15" type="checkbox">15 рублей</input>
    <input name="15" type="checkbox">15 рублей</input>
    <input name="15" type="checkbox">15 рублей</input>
    <input name="15" type="checkbox">15 рублей</input>
    <input name="10" type="checkbox">10 рублей</input>
    <input name="10" type="checkbox">10 рублей</input>
    <input name="10" type="checkbox">10 рублей</input>
    <input name="10" type="checkbox">10 рублей</input>
    <input name="10" type="checkbox">10 рублей</input>
    <input name="10" type="checkbox">10 рублей</input>
    <input name="5" type="checkbox">5 рублей</input>
    <input name="5" type="checkbox">5 рублей</input>
    <input name="5" type="checkbox">5 рублей</input>
    <input name="5" type="checkbox">5 рублей</input>
    <input name="5" type="checkbox">5 рублей</input>
    </form>
    
    <select>
    <option value="25">25</option>
    <option value="50">50</option>
    <option value="75">75</option>
    <option value="unlim">Неогр</option>
    </select>
    </div>

    На другом сайте дали такой вариант:
    Код:
    <script type="text/javascript">
    $(document).ready(function() {
    var cnt = 0;
    $("#content > input:checkbox:checked").each(function(){
    cnt++;
    })
    var allCheckboxes = $("#content input:checkbox");
    $("#content > input").change(function(){
    if(this.checked) {cnt++;}
    else{cnt -= 1 ;}
    if(cnt >= 3){
    var notChecked = allCheckboxes.not(':checked');
    $("#content > input:checkbox:checked").each(function(){
    $(notChecked).attr('disabled',true);
    })
    }
    else{
    $("#content > input:checkbox:checked").each(function(){
    $(allCheckboxes).attr('disabled',false);
    })
    }
    $("#images").text(cnt);
    })
    });
    </script>
    <div id=content>
    <input name="cb[]" type="checkbox">15 рублей</input>
    <input name="cb[]" type="checkbox">15 рублей</input>
    <input name="cb[]" type="checkbox">15 рублей</input>
    <input name="cb[]" type="checkbox">15 рублей</input>
    <input name="cb[]" type="checkbox">15 рублей</input>
    <input name="cb[]" type="checkbox">10 рублей</input>
    <input name="cb[]" type="checkbox">10 рублей</input>
    <input name="cb[]" type="checkbox">10 рублей</input>
    <input name="cb[]" type="checkbox">10 рублей</input>
    <input name="cb[]" type="checkbox">10 рублей</input>
    <input name="cb[]" type="checkbox">10 рублей</input>
    <input name="cb[]" type="checkbox">10 рублей</input>
    <input name="cb[]" type="checkbox">5 рублей</input>
    <input name="cb[]" type="checkbox">5 рублей</input>
    <input name="cb[]" type="checkbox">5 рублей</input>
    <input name="cb[]" type="checkbox">5 рублей</input>
    </div>
    
    Но он подсчитывает количество нажатых checkboxов а не стоимость
  2. Pьetro Пользователи

    Сообщения:
    12
    Лайки:
    1
    Пол:
    Мужской
    Репутация:
    0
    я в этом не разбираюсь, но если подумать логически, то возникает такая мысль: если возможно, можно сделать сложение товаров, и если будет стоимость этих товаров выше 25 руб, то произойдет остановка покупки. пример: товар 7 + нет товара = 10 руб 10<25, значит, покупка возможна, товар 7 + товар 12 + товар 5 = 30 руб. 30>25, значит, покупка невозможна, товар 2 + товар 7 = 25 руб 25=25, значит, покупка возможна.
  3. TopicStarter Overlay

    mr.Slink Пользователи

    Сообщения:
    261
    Лайки:
    92
    Пол:
    Мужской
    Репутация:
    0
    Команда:
    odoRemasrered
    Страна:
    Russian Federation Russian Federation
    Я про это и толкую. Нужно чтоб сайт сам подсчитывал, и не давал купить больше возможного! При этом нужно на сервер отправить данные о том что он купил.
  4. JoLan Команда форума Администратор AngeliCore Программист

    Сообщения:
    1.061
    Лайки:
    945
    Пол:
    Мужской
    Репутация:
    6
    Команда:
    AngeliCore
    Страна:
    Russian Federation Russian Federation
    Делай массив из CheckBox и рядом массив с ценами, которые написаны в этих чекбоксах. При нажатии на 1 из них идет проверка на CheckBox->Checked, если true, то прибавляем к финальной сумме цену из 2-го массива и делаем CheckBox->Enabled = false, у всех тех, которые в сумме будут давать более 25 р.

    Почти аналогично, если CheckBox->Checked == false;
  5. Administrator Guest

    Репутация:
    0
    С помощью пхп

    Код:
    if($_POST['option1'])
    {
    $a1='1';
    }
    if($_POST['option2'])
    {
    $a2='1';
    }
    if($_POST['option3'])
    {
    $a3='1';
    $a = $a1+$a2+$a3;
    if ($a>2)
    {
    echo "<script>alert('Не более двух!')</script>";
    }
    
    <td><input type="checkbox" name="option1"> Описание1</td>
    <td><input type="checkbox" name="option2"> Описание2</td>
    <td><input type="checkbox" name="option3"> Описание3</td>
    
    Более подробно могу объяснить в пм
    А подсчет стоимости это совсем просто
  6. Administrator Guest

    Репутация:
    0
  7. Kenpachi™ Who Crazy? Old school Пользователи Just a troll

    Сообщения:
    361
    Лайки:
    195
    Пол:
    Женский
    Репутация:
    0
    Команда:
    Solo
    Вот, набросал пример на JS
    http://jsfiddle.net/Kenpachi/M5Bks/

    Если лень по ссылки переходить и смотреть как это работает :


    Глупо для данной функции обновлять страницу, если так хочется через php то юзай Ajax
    1 человеку нравится это.
  8. TopicStarter Overlay

    mr.Slink Пользователи

    Сообщения:
    261
    Лайки:
    92
    Пол:
    Мужской
    Репутация:
    0
    Команда:
    odoRemasrered
    Страна:
    Russian Federation Russian Federation
    А как мне отправить на сервер то что купил гость.

    <input name="cb[]" value="15" type="checkbox" />

    Ведь name имеет уже значение cb[]
  9. Administrator Guest

    Репутация:
    0
    Да там просто проверки надо ставить. Самая главная есть ли у перса столько денег для покупки. А потом при нажатии купить, скрипт считает сколько галок стоит в чекбоксах и минусует лк. На самом деле несколько строчек скрипта. И в топку джиквери с аяксом.
  10. k0nst Пользователи

    Сообщения:
    26
    Лайки:
    4
    Пол:
    Мужской
    Репутация:
    0
    Команда:
    <script>alert('1')</script>
    основа этого личного кабинета, полагаю сделана на php?
    в любом случае, думаю у тебя товар берется из базы mysql, так что тебе мешает сделать 2-ю переменную суммы товара (вторую)
    , назовем её TovSum
    т.е. переменная будет подсчитывать "какова сумма, если добавить в корзину".
    например:
    у тебя клиент взял товар на сумму 24руб, до лимита у него остается ещё 1 руб.
    он клацает по товару, который стоит 1руб, TovSum = 25, значит разрешает добавлять, иначе - лесом.
  11. TopicStarter Overlay

    mr.Slink Пользователи

    Сообщения:
    261
    Лайки:
    92
    Пол:
    Мужской
    Репутация:
    0
    Команда:
    odoRemasrered
    Страна:
    Russian Federation Russian Federation
    Да с этим мне уже помогли. Осталось решить проблему отправки данных на сервер чтобы потом с помощью $_POST сделать запись в базу данных.
  12. k0nst Пользователи

    Сообщения:
    26
    Лайки:
    4
    Пол:
    Мужской
    Репутация:
    0
    Команда:
    <script>alert('1')</script>
    ну а с этим уже проще простого, если не знаешь как это сделать самому - открой ту же самую регистрацию от ПВ. главное не забывай про инъекции.
    вместо myql_escape_string используй - mysql_real_escape_string.
  13. Kenpachi™ Who Crazy? Old school Пользователи Just a troll

    Сообщения:
    361
    Лайки:
    195
    Пол:
    Женский
    Репутация:
    0
    Команда:
    Solo
    Что-то помогать перехотелос.
  14. TopicStarter Overlay

    mr.Slink Пользователи

    Сообщения:
    261
    Лайки:
    92
    Пол:
    Мужской
    Репутация:
    0
    Команда:
    odoRemasrered
    Страна:
    Russian Federation Russian Federation
    Да, я туплю. Но я завис на этом =(
  15. Kenpachi™ Who Crazy? Old school Пользователи Just a troll

    Сообщения:
    361
    Лайки:
    195
    Пол:
    Женский
    Репутация:
    0
    Команда:
    Solo
    Я о элементарной благодарности говорю за готовый код.

    По теме:
    Если хочешь передать данные пхп то код придется поменять.
    html+css: http://jsfiddle.net/Kenpachi/M5Bks/
    php:
    Код:
    foreach($_POST['cb'] as $id)
    echo $id;
    
    1 человеку нравится это.
  16. TopicStarter Overlay

    mr.Slink Пользователи

    Сообщения:
    261
    Лайки:
    92
    Пол:
    Мужской
    Репутация:
    0
    Команда:
    odoRemasrered
    Страна:
    Russian Federation Russian Federation
    Спасибо большое.
  17. Botchal MMORPG-DEVS.RU Пользователи

    Сообщения:
    182
    Лайки:
    66
    Репутация:
    0
    Код:
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <script src="http://code.jquery.com/jquery-1.8.3.min.js"></script>
    <script>
    var __SUM = 0;
    $(document).ready(function(){
    $("input[type=checkbox]").on("change", function(event) {
    if (this.checked) {
    __SUM += parseInt($(this).attr('name')); //а чё у нас валуе в нэйм Оо
    }else{
    __SUM -= parseInt($(this).attr('name'));
    }
    });
    
    $("form").on("submit", function(event) {
    var limit = $('select option:selected').val();
    if(__SUM == 0) {alert('Мало');return false;}
    if(__SUM > limit && limit != 'unlim'){
    alert('Много');
    return false;
    }else{
    $.post('index.php', $('form').serialize(), function(data) {
    if(data.length == 0){data = 'нихуя не вещает';}
    alert('Магазин вещает: '+data);
    });
    }
    return false;
    });
    });
    </script>
    </head>
    <body>
    <div id=content>
    <form>
    <input name="15" type="checkbox">15 рублей</input>
    <input name="15" type="checkbox">15 рублей</input>
    <input name="15" type="checkbox">15 рублей</input>
    <input name="15" type="checkbox">15 рублей</input>
    <input name="15" type="checkbox">15 рублей</input>
    <input name="10" type="checkbox">10 рублей</input>
    <input name="10" type="checkbox">10 рублей</input>
    <input name="10" type="checkbox">10 рублей</input>
    <input name="10" type="checkbox">10 рублей</input>
    <input name="10" type="checkbox">10 рублей</input>
    <input name="10" type="checkbox">10 рублей</input>
    <input name="5" type="checkbox">5 рублей</input>
    <input name="5" type="checkbox">5 рублей</input>
    <input name="5" type="checkbox">5 рублей</input>
    <input name="5" type="checkbox">5 рублей</input>
    <input name="5" type="checkbox">5 рублей</input>
    <input type="submit" value="Купить">
    </form>
    
    <select>
    <option value="25">25</option>
    <option value="50">50</option>
    <option value="75">75</option>
    <option value="unlim">Неогр</option>
    </select>
    </div>
    
    </body>
    </html>
    
Черновик сохранён Черновик удалён

Поделиться этой страницей