Home to our ukulele straps and U•BASS® straps alike, Kala's robust strap selection gives equal attention to both form and function. Adding mobility, security, and comfort to your playing experience, straps are also a great way to show off some extra personality!
// Preorder Property Handler
(function() {
function initPreorderProperty() {
// Check if this is a preorder product
if (!window.isPreorderProduct) {
return;
}
console.log('✅ Preorder product detected');
// Add property to form submissions
function addPreorderToForm() {
const addToCartButtons = document.querySelectorAll(
'[name="add"], ' +
'button[type="submit"][name="add"], ' +
'.product-form__submit, ' +
'[data-add-to-cart], ' +
'button.add-to-cart, ' +
'button[name="add"]'
);
addToCartButtons.forEach(function(button) {
button.addEventListener('click', function(e) {
const form = button.closest('form');
if (form && form.action && form.action.includes('/cart/add')) {
let preorderInput = form.querySelector('input[name="properties[_preorder]"]');
if (!preorderInput) {
preorderInput = document.createElement('input');
preorderInput.type = 'hidden';
preorderInput.name = 'properties[_preorder]';
preorderInput.value = 'true';
form.appendChild(preorderInput);
console.log('✅ Added _preorder hidden input');
}
}
});
});
}
// Intercept AJAX cart adds
function interceptCartAjax() {
const originalFetch = window.fetch;
window.fetch = function(...args) {
const [url, config] = args;
if (url && (url.includes('/cart/add.js') || url.includes('/cart/add'))) {
if (config && config.body) {
try {
// Handle JSON body
if (typeof config.body === 'string') {
const data = JSON.parse(config.body);
if (!data.properties) {
data.properties = {};
}
if (!data.properties._preorder) {
data.properties._preorder = 'true';
console.log('✅ Added _preorder to AJAX request');
}
config.body = JSON.stringify(data);
}
// Handle FormData
else if (config.body instanceof FormData) {
if (!config.body.has('properties[_preorder]')) {
config.body.append('properties[_preorder]', 'true');
console.log('✅ Added _preorder to FormData');
}
}
} catch (e) {
console.error('Error modifying cart request:', e);
}
}
}
return originalFetch.apply(this, args);
};
}
// Initialize when DOM is ready
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', function() {
addPreorderToForm();
interceptCartAjax();
});
} else {
addPreorderToForm();
interceptCartAjax();
}
}
// Initialize
initPreorderProperty();
})();
 
 
One or more of the items in your cart is a recurring or deferred purchase. By continuing, I agree to the cancellation policy and authorize you to charge my payment method at the prices, frequency and dates listed on this page until my order is fulfilled or I cancel, if permitted.