Банк Ролевой
Текущий баланс:
подача заявки на нужного персонажа
подача заявки в "хочу видеть"
реклама нужного
выкуп роли на месяц
заявка в шапку
gemcross |
Лучший пост у Аполлона
аполлон ведет себя так, потому что не боится. чего ему, любимому сыну зевса, бояться? смерти? так дядюшка и не примет его, смутьяна, в свое царство! с ним же дионис увяжется, и тогда бедному аиду не будет никакого покоя.Лучший эпизод: "Трудно, товарищи, верить в хорошее"
Ксейден и ГаррикПотерялся Кардан Гринбрайр, Король Эльфхейма
Привет, Гость! Войдите или зарегистрируйтесь.
Вы здесь » gemcross » Тестовый форум » банк
Банк Ролевой
Текущий баланс:
подача заявки на нужного персонажа
подача заявки в "хочу видеть"
реклама нужного
выкуп роли на месяц
заявка в шапку
За какие заслуги:
» подача заявки в "хочу видеть": 1 * 50 = 50 джемов
123
Общая сумма начисляемой валюты: 50 джемов
Итоговая сумма в профиле: 300 джемов
За что получить джемы:
» подача заявки на нужного персонажа: 2 * 100 = 200 джемов
123
456
» подача заявки в "хочу видеть": 1 * 50 = 50 джемов
На что потратить джемы:
» реклама нужного: 2 * 100 = 200 джемов
963
524
Общая сумма начисляемой валюты: 50 джемов
Итоговая сумма в профиле: 300 джемов
[spoiler="тело поста"]
[/block]
[/block]
Код:[block=bank] [block=bankHead]Банк Ролевой[/block] [block=balanceField]Текущий баланс: [balance=currentBalance][/balance] [/block] [block=bankForm] [block=bankTabs][tab=itemSave][label=itemSave]Получить[/label][tab=itemSpend][label=itemSpend]Потратить[/label][/block] [block=bankItems] [block=itemSave][checkbox=подача заявки на нужного персонажа]подача заявки на нужного персонажа[/checkbox][price]100[/price] * [number]0[/number][textarea=proofInput]Ссылка на подтверждение...[/textarea][/block] [block=itemSave][checkbox=подача заявки в "хочу видеть"]подача заявки в "хочу видеть"[/checkbox][price]50[/price] * [number]0[/number][textarea=proofInput]Ссылка на подтверждение...[/textarea] [/block] [block=itemSpend] [checkbox=реклама нужного]реклама нужного[/checkbox] [price]100[/price] * [number]0[/number] [textarea=proofInput]Ссылка на заявку[/textarea] [/block] [block=itemSpend] [checkbox=заявка в шапку]выкуп роли на месяц[/checkbox] [price]200[/price] * [number]0[/number] [textarea=proofInput]имя персонажа и фандом[/textarea] [/block] [block=itemSpend] [checkbox=заявка в шапку]заявка в шапку[/checkbox] [price]200[/price] * [number]0[/number] [textarea=proofInput]имя персонажа и фандом[/textarea] [/block] [/block] [button=generateButton]Рассчитать[/button] ТУТ ПУСТОЙ КОД [/block] [/block]
textarea[textarea.proofInput]:im
balance[input/id]:im
tab[input.tabButton/id]:sia
label[label/for]:ia
checkbox[input/value]:ia
price[div]:i
number[input]:i
button[button/id]:a
Код:<script type="text/javascript">/** * author: амбассадор кринжа * modification: dreamer * version: 2.1 * status: test **/ // Обёртка для всего скрипта (() => { // Кэширование часто используемых селекторов const currentBalanceInput = document.getElementById('currentBalance'); const generateButton = document.getElementById('generateButton'); // Инициализация: установка баланса и скрытие элементов для действия "потратить" const init = () => { document.querySelectorAll('.bankTabs p').forEach(tabs => { tabs.classList.add('radio-group'); }); document.querySelectorAll('input.tabButton').forEach(input => { input.type = 'radio'; input.name = 'action'; }); document.querySelectorAll('input.custom_tag_checkbox').forEach(input => { input.type = 'checkbox'; }); document.querySelectorAll('input.custom_tag_number').forEach(input => { input.type = 'number'; input.value = 0; }); if (typeof UserFld5 !== 'undefined') { currentBalanceInput.value = parseInt(UserFld5) || 0; } else { currentBalanceInput.value = 0; } document.querySelectorAll('.bankItems .itemSpend').forEach(itembank => itembank.classList.add('hidden') ); document.querySelector('input#itemSave').checked = true; document.querySelectorAll('textarea.proofInput').forEach(textarea => { const text = textarea.textContent.trim(); if (text) { textarea.setAttribute('placeholder', text); textarea.textContent = ''; } }); }; // Установка глобальных обработчиков событий const setupEventListeners = () => { document.querySelectorAll('input[name="action"]').forEach(button => { // Вешаем обработчик на изменение button.addEventListener('change', function () { const action = button.id; document.querySelectorAll('.bankItems > *').forEach(itembank => { itembank.classList.toggle('hidden'); }); }); }); document.addEventListener('change', e => { // Обработка чекбоксов: показываем/скрываем поле подтверждения и блокируем/разблокируем поле количества if (e.target.matches('.bankItems input[type="checkbox"]')) { const itembank = e.target.closest('.bankItems > div'); const proofInput = itembank.querySelector('.resizable-textarea'); const quantityInput = itembank.querySelector('input[type="number"]'); proofInput.classList.toggle('visible', e.target.checked); quantityInput.disabled = !e.target.checked; if (!e.target.checked) { quantityInput.value = 0; proofInput.value = ''; } } }); //Обработка ввода в поле подтверждения (.proof-input) document.addEventListener('input', e => { if (e.target.matches('.proofInput')) { const proofInput = e.target; const itembank = proofInput.closest('.bankItems > div'); const quantityInput = itembank.querySelector('input[type="number"]'); // Подсчёт количества строк в поле подтверждения const lines = proofInput.value.split('\n').filter(line => line.trim() !== '').length; // Установка значения числового поля в зависимости от количества строк quantityInput.value = Math.max(1, lines); // Минимум 1 } }); generateButton.addEventListener('click', generateBBCode); }; const generateBBCode = () => { let total = 0, detailsSave = '', detailsSpend = ''; document.querySelectorAll('.bankItems input[type="checkbox"]:checked').forEach(checkbox => { const itembank = checkbox.closest('.bankItems > div'); const quantity = parseInt(itembank.querySelector('input[type="number"]').value); const price = parseInt(itembank.querySelector('.custom_tag_price').textContent); const proof = itembank.querySelector('.proofInput').value.trim(); const sum = quantity * price; // Основная строка с описанием const line = `» ${checkbox.value}: ${quantity} * ${price} = ${sum} джемов`; if (itembank.classList.contains('itemSave')) { total += sum; if (proof) { detailsSave += `${line}\n[quote]\n[hr]\n${proof}[/quote]\n`; } else { detailsSave += line + '\n'; } } else { total -= sum; if (proof) { detailsSpend += `${line}\n[quote]${proof}[/quote]\n`; } else { detailsSpend += line + '\n'; } } }); const currentBalance = parseInt(currentBalanceInput.value) || 0; const finalAmount = currentBalance + total; let bbcode = ''; if (detailsSave) { bbcode += `[b]За что получить джемы:[/b]\n${detailsSave}\n`; } if (detailsSpend) { bbcode += `[b]На что потратить джемы:[/b]\n${detailsSpend}\n`; } bbcode += `[b]Общая сумма начисляемой валюты:[/b] ${total} джемов \n[b]Итоговая сумма в профиле:[/b] ${finalAmount} джемов`; document.querySelector('.blockcode pre').textContent = bbcode; }; init(); setupEventListeners(); })();</script>
Вы здесь » gemcross » Тестовый форум » банк