Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Вывод информации (https://javascript.ru/forum/dom-window/29915-vyvod-informacii.html)

alerzo 16.07.2012 22:31

Вывод информации
 
Добрый день уважаемые форумфане. Хочу на сайте создать нечто в виде предварительной оценки заказа.т.е. пользователь нажимает на кнопочку оценить и открывается всплывающее окно в котором он отмечает чекбоксы и в зависимости от выбранных чекбоков суммируется сумма заказа, далее он жмет оценить и появляется сообщение с примерной стоимостью
т.е. примерно так:
отметил: книжки (добавляем +5р)
отметил: книжки +сумка (добавляем +3р)
и т.д.
помогите кто чем может!:)

Dim@ 16.07.2012 22:44

alerzo,
угу, все побежали вам помогать :lol: сами приложите какие-нибудь усилия и если произойдет сбой напишите - возможно вам помогут, ну или идите в раздел работа и предлагайте цену за реализацию скрипта с нуля

lord2kim 16.07.2012 23:00

alerzo, ну а в чем проблема?
по нажатии на кнопку открывайте окно, модальное окно или показывайте всплывающий блок div с соответствующими checkbox-переключателями и т.д.
в value переключателей засовываете соответствующие суммы и подсчитываете по количеству отмеченных
после нажатия на кнопку возвращайте сумму атрибутов value checkbox-переключателей, если это окно, или сразу подставляйте число из ранее сложенной переменной в нужное место на странице, либо выводите в виде alert()

devote 16.07.2012 23:05

<label><input type="checkbox" data-price="5" /> Книжки</label><br />
<label><input type="checkbox" data-price="3" /> Сумка</label><br />
<label><input type="checkbox" data-price="10" checked /> Ручка</label><br />
<label><input type="checkbox" data-price="13" /> Карандаш</label><br />
<label><input type="checkbox" data-price="27" /> Что-то</label><br />
<div id="total">0 руб.</div>
<script>

    var total = 0,
        totalDiv = document.getElementById( 'total' ),
        els = document.getElementsByTagName( 'input' );

    for( var i = 0, el; el = els[ i++ ]; ) {
        if ( el.type == "checkbox" && el.getAttribute( 'data-price' ) ) {
            total += el.checked ? ( parseFloat( el.getAttribute( 'data-price' ) ) || 0 ) : 0;
            el.onclick = function( e ) {
                var target = e && e.target || window.srcElement;
                total = target.checked ?
                    total + ( parseFloat( target.getAttribute( 'data-price' ) ) || 0 ) :
                    total - ( parseFloat( target.getAttribute( 'data-price' ) ) || 0 );
                totalDiv.innerHTML = total + " руб.";
            }
        }
    }

    totalDiv.innerHTML = total + " руб.";
</script>

Dim@ 16.07.2012 23:07

devote,
а вопрос я когда смотрю прмеры mdn там тоже все время текст связанный с checkbox помещают в label - зачем?:-?

devote 16.07.2012 23:08

Цитата:

Сообщение от Dim@
а вопрос я когда смотрю прмеры mdn там тоже все время текст связанный с checkbox помещают в label - зачем?

что бы по клику на тексте, чекбокс перехватил клик

lord2kim 16.07.2012 23:08

Цитата:

Сообщение от Dim@ (Сообщение 189385)
devote,
а вопрос я когда смотрю прмеры mdn там тоже все время текст связанный с checkbox помещают в label - зачем?:-?

чтобы checkbox выделялся и при клике по соответствующему тексту...

Dim@ 16.07.2012 23:13

lord2kim,
хм, label означает слой, то есть при клике на слой активируется его инпут что-ли?

lord2kim 16.07.2012 23:15

Цитата:

Сообщение от Dim@ (Сообщение 189388)
lord2kim,
хм, label означает слой, то есть при клике на слой активируется его инпут что-ли?

наверн) чаще делают так
<input type="checkbox" id="check1"><label for="check1">Lorem</label>

devote 16.07.2012 23:16

Цитата:

Сообщение от Dim@
то есть при клике на слой активируется его инпут что-ли?

по сути передает фокус, это работает и с другими:
<label><input type="text" /> Книжки</label><br/>
<label><input type="color" /> Книжки</label><br/>
<label><textarea></textarea> Книжки</label><br/>

Magneto 16.07.2012 23:16

Это связывание лейбла и инпута:
Цитата:

Сообщение от lord2kim (Сообщение 189387)
чтобы checkbox выделялся и при клике по соответствующему тексту...

Цитата:

Сообщение от devote (Сообщение 189386)
что бы по клику на тексте, чекбокс перехватил клик

или так
<input type="checkbox" id="x1" />
    <div style="height: 50px; background: #eee"></div>
<label for="x1">Лейбл для чекбокс</label>

devote 16.07.2012 23:17

Цитата:

Сообщение от lord2kim
наверн) чаще делают так

не знаю как чаще, но так нужно делать когда текст далеко от тега инпут, если же он рядом, то проще обрамить их просто тегом.

devote 16.07.2012 23:18

Цитата:

Сообщение от Magneto
или так

мол я этого не знаю)))

Dim@ 16.07.2012 23:19

Цитата:

Сообщение от devote (Сообщение 189390)
по сути передает фокус

спасиб:)

lord2kim 16.07.2012 23:19

Цитата:

Сообщение от devote (Сообщение 189392)
не знаю как чаще, но так нужно делать когда текст далеко от тега инпут, если же он рядом, то проще обрамить их просто тегом.

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

devote 16.07.2012 23:21

Цитата:

Сообщение от lord2kim
согласен, но сколько видел в большинстве случает видел так, как у меня в последнем посте...

ну тут все от дизайнера зависит, если дизайнер решит лейбл сунуть черт знает куда, то понятно дело что без for="someinput" не обойтись

bes 16.07.2012 23:34

Цитата:

Сообщение от Dim@
хм, label означает слой, то есть при клике на слой активируется его инпут что-ли?

точнее метка, метит input, select, textarea
Цитата:

Сообщение от devote
по сути передает фокус

в случае с input type="checkbox" ещё и установка checked (при получении фокуса, например, по нажатию tab checked не устанавливается)
Цитата:

Сообщение от devote
мол я этого не знаю)))


bes 17.07.2012 09:12

Цитата:

Сообщение от devote
что бы по клику на тексте, чекбокс перехватил клик

всё-таки наверное это было правильным утверждением, а не про фокус

<label><input type="checkbox" onclick="alert('a')">click</label><br>
<label><input type="button" value="click" onclick="alert('b')">click</label><br>
<label><input onclick="alert('c')">click</label>


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