MediaWiki:Common.js
Appearance
Note: After publishing, you may have to bypass your browser's cache to see the changes.
- Firefox / Safari: Hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (⌘-R on a Mac)
- Google Chrome: Press Ctrl-Shift-R (⌘-Shift-R on a Mac)
- Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5.
/* Any JavaScript here will be loaded for all users on every page load. */
document.addEventListener("DOMContentLoaded", function () {
document.querySelectorAll("form[name^='poll_']").forEach(function (form) {
var pollChoices = form.querySelectorAll(".poll-choice");
if (pollChoices.length === 0 || form.dataset.processed) return; // Avoid duplicate processing
var select = document.createElement("select");
select.name = "poll_choice";
select.classList.add("poll-dropdown");
// Add a default "Choose an option" entry
var defaultOption = document.createElement("option");
defaultOption.textContent = "Choose an option...";
defaultOption.value = "";
defaultOption.disabled = true;
defaultOption.selected = true;
select.appendChild(defaultOption);
pollChoices.forEach(function (choice) {
var input = choice.querySelector("input[type='radio']");
var labelText = choice.textContent.trim();
if (input && labelText) {
var option = document.createElement("option");
option.value = input.value;
option.textContent = labelText;
select.appendChild(option);
}
});
// Remove existing radio buttons and replace with dropdown
var pollContainer = pollChoices[0].parentNode;
pollContainer.innerHTML = ""; // Clear existing choices
pollContainer.appendChild(select);
// Ensure form submits correct value when dropdown is changed
select.addEventListener("change", function () {
var hiddenInput = form.querySelector("input[name='poll_choice']");
if (!hiddenInput) {
hiddenInput = document.createElement("input");
hiddenInput.type = "hidden";
hiddenInput.name = "poll_choice";
form.appendChild(hiddenInput);
}
hiddenInput.value = select.value;
});
form.dataset.processed = "true"; // Mark as processed
});
});