Флуд №439 - В честь вампирских приключений
Сообщений 941 страница 945 из 945
Поделиться941Вчера 18:39:16
Родан, арбузер подкрепил. %) В макс (у нас опять красный уровень угрозы, больше ничего не работало). Но она пока не прочитала.
Поделиться942Сегодня 11:00:37
[nic]Родан[/nic][sta]Сэр рыцарь[/sta][ava]https://forumavatars.ru/img/avatars/0006/f5/43/2-1746565023.jpg[/ava][sgn] [/sgn]
Морис, я уже третью извилину сломал и не понимаю почему эта кнопка (я потом удалю, это просто для наглядности) не работает.
Код:<!-- Кнопка "Ролевая маска" и её меню --> <style> /* Стили для меню ролевой маски */ #mask-menu { display: none; position: fixed; top: 50%; left: 50%; transform: translate(-50%, -50%); background: #d2c6ae; border: 3px double #bfa681; box-shadow: 0px 0px 15px rgba(0,0,0,0.5), inset 0px 0px 5px 0px #c3ac89; padding: 20px; z-index: 10000; border-radius: 8px; min-width: 300px; } #mask-menu h3 { margin: 0 0 15px 0; color: #525923; text-align: center; font-family: Georgia, Tahoma, serif; } #mask-menu input, #mask-menu textarea { width: 100%; margin: 5px 0 10px 0; padding: 8px; box-sizing: border-box; background: #dacdb4; border: 1px solid #987b54; color: #2b2114; border-radius: 4px; } #mask-menu textarea { resize: vertical; min-height: 60px; } #mask-menu label { font-weight: bold; color: #8a5c2e; display: block; margin-top: 5px; } #mask-menu button { margin-top: 15px; padding: 8px 15px; background: #d2c6ae; border: 1px solid #ab9171; box-shadow: 0 1px 5px #c1a37c; font-weight: bold; cursor: pointer; border-radius: 4px; color: #483216; } #mask-menu button:hover { background: #e8ddc5; } .mask-menu-buttons { display: flex; justify-content: space-between; gap: 10px; } #mask-overlay { display: none; position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: rgba(0,0,0,0.6); z-index: 9999; } </style> <!-- Кнопка "Ролевая маска" --> <button id="mask-button" style="margin-right: 5px;" title="Ролевая маска"> <img src="https://i.gyazo.com/ca5e4e2929d937352a8098b4744e3287.png" alt="Ролевая маска" style="vertical-align: middle;"> Ролевая маска </button> <!-- Меню ролевой маски --> <div id="mask-overlay" onclick="closeMaskMenu()"></div> <div id="mask-menu"> <h3>Ролевая маска</h3> <label>Ник:</label> <input type="text" id="mask-nic" placeholder="Новое имя персонажа"> <label>URL аватарки:</label> <input type="text" id="mask-ava" placeholder="https://..."> <label>Статус:</label> <input type="text" id="mask-sta" placeholder="Статус персонажа"> <label>Подпись:</label> <textarea id="mask-sgn" placeholder="Подпись персонажа"></textarea> <div class="mask-menu-buttons"> <button onclick="insertMask()">Вставить маску</button> <button onclick="closeMaskMenu()">Отмена</button> </div> </div> <script> // Функция открытия/закрытия меню function showMaskMenu() { document.getElementById('mask-overlay').style.display = 'block'; document.getElementById('mask-menu').style.display = 'block'; } function closeMaskMenu() { document.getElementById('mask-overlay').style.display = 'none'; document.getElementById('mask-menu').style.display = 'none'; } // Функция для вставки текста в текстовое поле (без отправки формы) function insertTextToReply(text) { var textarea = document.getElementById('main-reply'); if (!textarea) return; // Получаем текущее значение var currentValue = textarea.value; var cursorPos = textarea.selectionStart; // Вставляем текст в позицию курсора var newValue = currentValue.substring(0, cursorPos) + text + currentValue.substring(cursorPos); textarea.value = newValue; // Перемещаем курсор после вставленного текста var newCursorPos = cursorPos + text.length; textarea.setSelectionRange(newCursorPos, newCursorPos); // Фокусируемся на текстовом поле textarea.focus(); } // Функция вставки маски в форму ответа function insertMask() { var nic = document.getElementById('mask-nic').value.trim(); var ava = document.getElementById('mask-ava').value.trim(); var sta = document.getElementById('mask-sta').value.trim(); var sgn = document.getElementById('mask-sgn').value.trim(); var result = ''; if (nic) result += ''; if (ava) result += ''; if (sta) result += ''; if (sgn) result += ''; if (result) { result += '\n'; insertTextToReply(result); } // Очищаем поля document.getElementById('mask-nic').value = ''; document.getElementById('mask-ava').value = ''; document.getElementById('mask-sta').value = ''; document.getElementById('mask-sgn').value = ''; // Закрываем меню closeMaskMenu(); } // Привязываем обработчик к кнопке маски $(function() { $('#mask-button').click(function(e) { e.preventDefault(); showMaskMenu(); }); }); </script>
И я вот хоть убей не понимаю, почему тут:
<div id="mask-overlay" onclick="closeMaskMenu()"></div>
Всё работает как надо, а тут:
<button onclick="closeMaskMenu()">Отмена</button>
Происходит отправка поста, хотя функция вызывается одна и та же. Может, я что-то про HTML такое заковыристое не знаю? Не подскажешь, в чём причина?
Поделиться943Сегодня 13:09:11
Может, я что-то про HTML такое заковыристое не знаю?
Оч-чень даже может быть... div - это просто блок, коробочка без прикрученного к ней функционала, а button - кнопка, у которой есть функционал, даже если никаких функций к ней не привязывать. По умолчанию, если не указано иное, кнопка имеет тип submit, а это как раз и есть отправка формы, внутри которой эта кнопка находится. Пропиши ей атрибут type="button", должна перестать отправлять форму и выполнять только привязанную на onclick функцию. Ну можно ещё извратиться и прописать в функции предотвращение действий по умолчанию... Но это уже немножко излишество.
Поделиться944Сегодня 13:28:59
Пропиши ей атрибут type="button", должна перестать отправлять форму и выполнять только привязанную на onclick функцию.
Большое спасибо, попробую.
Поделиться945Сегодня 13:42:17
Пропиши ей атрибут type="button"
Помогло. Ещё раз благодарю за эту подсказку. Без тебя я бы сломал ещё три извилины.











[/sta][ava]https://c.pxhere.com/photos/dd/2c/flames_fire_heat_fires_flame_fireplace-633738.jpg!s2[/ava][sgn] [/sgn]

