Music Preferences Questionnaire
This helps your DJ get a sense of what you like and what your guests might enjoy too.
- Check any boxes that feel like a fit, and feel free to add notes where helpful. There’s no pressure to overthink it.
- We’ll use your selections to guide the overall feel and flow of the night—not necessarily to play every artist or genre exactly as-is.
Your DJ will keep the setting, crowd, and energy in mind when weaving in your preferences.
// TBD items section, extracted from page content
function getTBDItems() {
const tbdItems = [];
document.querySelectorAll(“.gfield”).forEach(fieldset => {
const legendText = fieldset.querySelector(“legend”)?.innerText;
const fieldId = fieldset.getAttribute(“id”);
let hasTBD = false;
fieldset.querySelectorAll(“input[type=’radio’], input[type=’checkbox’]”).forEach(input => {
if (input.checked && input.value.includes(“TBD”)) {
hasTBD = true;
}
// Listen for changes to mark the field as complete
input.addEventListener(“change”, function() {
if (!input.value.includes(“TBD”) && input.checked) {
markAsComplete(fieldId);
}
});
});
if (hasTBD && legendText && fieldId) {
tbdItems.push({ legendText, fieldId });
}
});
return tbdItems;
}
function generateTOC(tbdItems) {
const tocElement = document.getElementById(“toc”);
tocElement.innerHTML = “”; // Clear previous contents
if (tbdItems.length === 0) {
console.log(“No TBD items found.”);
tocElement.classList.add(“hide”);
return;
}
// Add header for the TOC
const header = document.createElement(“h4”);
header.textContent = “Questions with Remaining Decisions”;
tocElement.appendChild(header);
// Create the list container
const tocContainer = document.createElement(“ul”);
tbdItems.forEach(item => {
const listItem = document.createElement(“li”);
const link = document.createElement(“a”);
link.href = `#${item.fieldId}`;
link.textContent = item.legendText +” ▾”;
// Add click event to apply highlight effect
link.addEventListener(“click”, function(event) {
event.preventDefault();
const targetFieldset = document.getElementById(item.fieldId);
if (targetFieldset) {
targetFieldset.scrollIntoView({ behavior: “smooth” });
targetFieldset.classList.add(“fieldset-highlight”);
setTimeout(() => {
targetFieldset.classList.add(“fade-out”);
setTimeout(() => {
targetFieldset.classList.remove(“fieldset-highlight”, “fade-out”);
}, 1000);
}, 1000);
}
});
listItem.appendChild(link);
listItem.setAttribute(“data-field-id”, item.fieldId);
tocContainer.appendChild(listItem);
});
tocElement.appendChild(tocContainer);
}
function markAsComplete(fieldId) {
const tocItem = document.querySelector(`#toc li[data-field-id=”${fieldId}”] a`);
if (tocItem && !tocItem.classList.contains(“completed”)) {
tocItem.classList.add(“completed”);
tocItem.innerHTML = `✅ ${tocItem.innerHTML}`;
}
}
// Toggle function to show only TBD fields, hiding other specified field types
function toggleFields(onlyTBD) {
document.querySelectorAll(“.gfield”).forEach(fieldset => {
const fieldId = fieldset.getAttribute(“id”);
const isTBDField = tbdItems.some(item => item.fieldId === fieldId);
if (onlyTBD && !isTBDField) {
// Hide entire fieldset for non-TBD fields
fieldset.classList.add(“field-fade-out”);
} else {
fieldset.classList.remove(“field-fade-out”);
}
});
// Also hide textareas, text inputs, number inputs, and select fields outside of TBD fields
if (onlyTBD) {
document.querySelectorAll(“textarea, input[type=’text’], input[type=’number’], .gfield–input-type-select, .gfield–input-type-text”).forEach(element => {
const fieldset = element.closest(“.gfield”);
if (fieldset && !fieldset.classList.contains(“field-fade-out”)) {
element.classList.remove(“field-fade-out”);
} else {
element.classList.add(“field-fade-out”);
}
});
} else {
// Reset fade-out classes when “Show all fields” is selected
document.querySelectorAll(“.field-fade-out”).forEach(element => {
element.classList.remove(“field-fade-out”);
});
}
}
// Listen for radio button changes to toggle fields visibility
// document.querySelectorAll(“input[name=’toggleFields’]”).forEach(radio => {
// radio.addEventListener(“change”, function() {
// toggleFields(this.value === “on”);
// });
// });
// const tbdItems = getTBDItems();
// generateTOC(tbdItems);
You can come back and edit this later. Just be sure to click the “Save and Continue Later” button at the bottom to save your responses.
"*" indicates required fields
https://docs.google.com/forms/d/1CuEX3SQC35TRBkdx9UTC5nsGr5NdaQm1QsoXf1szeb8/edit