diff --git a/examples/inventory_corporate.html b/examples/inventory_corporate.html
index ad6b8cb..118be88 100644
--- a/examples/inventory_corporate.html
+++ b/examples/inventory_corporate.html
@@ -841,16 +841,21 @@ input.invalid, select.invalid, textarea.invalid {
// Clear form data (without removing from storage)
function clearFormData() {
- document.querySelectorAll('input[type="text"], input[type="number"], input[type="date"], select, textarea').forEach(field => {
- field.value = '';
- field.classList.remove('invalid');
+ const form = document.getElementById('inventory-form');
+ if (!form) return;
+
+ form.querySelectorAll('input[type="text"], input[type="number"], input[type="date"], select, textarea').forEach(field => {
+ if (field.id !== 'form-selector') {
+ field.value = '';
+ field.classList.remove('invalid');
+ }
});
- document.querySelectorAll('input[type="checkbox"]').forEach(cb => {
+ form.querySelectorAll('input[type="checkbox"]').forEach(cb => {
cb.checked = false;
});
- document.querySelectorAll('.photo-preview').forEach(img => {
+ form.querySelectorAll('.photo-preview').forEach(img => {
img.src = '';
img.style.display = 'none';
img.parentElement.classList.remove('has-photo');
@@ -915,30 +920,32 @@ input.invalid, select.invalid, textarea.invalid {
// Get all form data
function getFormData() {
const data = {};
+ const form = document.getElementById('inventory-form');
+ if (!form) return data;
- // Text, number, date, select, textarea
- document.querySelectorAll('input[type="text"], input[type="number"], input[type="date"], select, textarea').forEach(field => {
- if (field.id) {
+ // Text, number, date, select, textarea (only within the form)
+ form.querySelectorAll('input[type="text"], input[type="number"], input[type="date"], select, textarea').forEach(field => {
+ if (field.id && field.id !== 'form-selector') {
data[field.id] = field.value;
}
});
// Checkboxes (boolean)
- document.querySelectorAll('input[type="checkbox"].boolean-field').forEach(field => {
+ form.querySelectorAll('input[type="checkbox"].boolean-field').forEach(field => {
if (field.id) {
data[field.id] = field.checked;
}
});
// Multiselect
- document.querySelectorAll('.multiselect-group').forEach(group => {
+ form.querySelectorAll('.multiselect-group').forEach(group => {
const id = group.dataset.id;
const checked = Array.from(group.querySelectorAll('input:checked')).map(cb => cb.value);
data[id] = checked;
});
// Photo
- document.querySelectorAll('.photo-preview').forEach(img => {
+ form.querySelectorAll('.photo-preview').forEach(img => {
const id = img.id;
if (img.src && !img.src.includes('data:image/svg')) {
data[id] = img.src;
diff --git a/examples/inventory_minimal.html b/examples/inventory_minimal.html
index 17a7644..cb86e84 100644
--- a/examples/inventory_minimal.html
+++ b/examples/inventory_minimal.html
@@ -872,16 +872,21 @@ select {
// Clear form data (without removing from storage)
function clearFormData() {
- document.querySelectorAll('input[type="text"], input[type="number"], input[type="date"], select, textarea').forEach(field => {
- field.value = '';
- field.classList.remove('invalid');
+ const form = document.getElementById('inventory-form');
+ if (!form) return;
+
+ form.querySelectorAll('input[type="text"], input[type="number"], input[type="date"], select, textarea').forEach(field => {
+ if (field.id !== 'form-selector') {
+ field.value = '';
+ field.classList.remove('invalid');
+ }
});
- document.querySelectorAll('input[type="checkbox"]').forEach(cb => {
+ form.querySelectorAll('input[type="checkbox"]').forEach(cb => {
cb.checked = false;
});
- document.querySelectorAll('.photo-preview').forEach(img => {
+ form.querySelectorAll('.photo-preview').forEach(img => {
img.src = '';
img.style.display = 'none';
img.parentElement.classList.remove('has-photo');
@@ -946,30 +951,32 @@ select {
// Get all form data
function getFormData() {
const data = {};
+ const form = document.getElementById('inventory-form');
+ if (!form) return data;
- // Text, number, date, select, textarea
- document.querySelectorAll('input[type="text"], input[type="number"], input[type="date"], select, textarea').forEach(field => {
- if (field.id) {
+ // Text, number, date, select, textarea (only within the form)
+ form.querySelectorAll('input[type="text"], input[type="number"], input[type="date"], select, textarea').forEach(field => {
+ if (field.id && field.id !== 'form-selector') {
data[field.id] = field.value;
}
});
// Checkboxes (boolean)
- document.querySelectorAll('input[type="checkbox"].boolean-field').forEach(field => {
+ form.querySelectorAll('input[type="checkbox"].boolean-field').forEach(field => {
if (field.id) {
data[field.id] = field.checked;
}
});
// Multiselect
- document.querySelectorAll('.multiselect-group').forEach(group => {
+ form.querySelectorAll('.multiselect-group').forEach(group => {
const id = group.dataset.id;
const checked = Array.from(group.querySelectorAll('input:checked')).map(cb => cb.value);
data[id] = checked;
});
// Photo
- document.querySelectorAll('.photo-preview').forEach(img => {
+ form.querySelectorAll('.photo-preview').forEach(img => {
const id = img.id;
if (img.src && !img.src.includes('data:image/svg')) {
data[id] = img.src;
diff --git a/examples/inventory_modern.html b/examples/inventory_modern.html
index 1cc968f..c8127ff 100644
--- a/examples/inventory_modern.html
+++ b/examples/inventory_modern.html
@@ -903,16 +903,21 @@ input.invalid, select.invalid, textarea.invalid {
// Clear form data (without removing from storage)
function clearFormData() {
- document.querySelectorAll('input[type="text"], input[type="number"], input[type="date"], select, textarea').forEach(field => {
- field.value = '';
- field.classList.remove('invalid');
+ const form = document.getElementById('inventory-form');
+ if (!form) return;
+
+ form.querySelectorAll('input[type="text"], input[type="number"], input[type="date"], select, textarea').forEach(field => {
+ if (field.id !== 'form-selector') {
+ field.value = '';
+ field.classList.remove('invalid');
+ }
});
- document.querySelectorAll('input[type="checkbox"]').forEach(cb => {
+ form.querySelectorAll('input[type="checkbox"]').forEach(cb => {
cb.checked = false;
});
- document.querySelectorAll('.photo-preview').forEach(img => {
+ form.querySelectorAll('.photo-preview').forEach(img => {
img.src = '';
img.style.display = 'none';
img.parentElement.classList.remove('has-photo');
@@ -977,30 +982,32 @@ input.invalid, select.invalid, textarea.invalid {
// Get all form data
function getFormData() {
const data = {};
+ const form = document.getElementById('inventory-form');
+ if (!form) return data;
- // Text, number, date, select, textarea
- document.querySelectorAll('input[type="text"], input[type="number"], input[type="date"], select, textarea').forEach(field => {
- if (field.id) {
+ // Text, number, date, select, textarea (only within the form)
+ form.querySelectorAll('input[type="text"], input[type="number"], input[type="date"], select, textarea').forEach(field => {
+ if (field.id && field.id !== 'form-selector') {
data[field.id] = field.value;
}
});
// Checkboxes (boolean)
- document.querySelectorAll('input[type="checkbox"].boolean-field').forEach(field => {
+ form.querySelectorAll('input[type="checkbox"].boolean-field').forEach(field => {
if (field.id) {
data[field.id] = field.checked;
}
});
// Multiselect
- document.querySelectorAll('.multiselect-group').forEach(group => {
+ form.querySelectorAll('.multiselect-group').forEach(group => {
const id = group.dataset.id;
const checked = Array.from(group.querySelectorAll('input:checked')).map(cb => cb.value);
data[id] = checked;
});
// Photo
- document.querySelectorAll('.photo-preview').forEach(img => {
+ form.querySelectorAll('.photo-preview').forEach(img => {
const id = img.id;
if (img.src && !img.src.includes('data:image/svg')) {
data[id] = img.src;
diff --git a/src/templates.py b/src/templates.py
index 0ac5f21..adb3877 100644
--- a/src/templates.py
+++ b/src/templates.py
@@ -1107,16 +1107,21 @@ JAVASCRIPT = """
// Clear form data (without removing from storage)
function clearFormData() {
- document.querySelectorAll('input[type="text"], input[type="number"], input[type="date"], select, textarea').forEach(field => {
- field.value = '';
- field.classList.remove('invalid');
+ const form = document.getElementById('inventory-form');
+ if (!form) return;
+
+ form.querySelectorAll('input[type="text"], input[type="number"], input[type="date"], select, textarea').forEach(field => {
+ if (field.id !== 'form-selector') {
+ field.value = '';
+ field.classList.remove('invalid');
+ }
});
- document.querySelectorAll('input[type="checkbox"]').forEach(cb => {
+ form.querySelectorAll('input[type="checkbox"]').forEach(cb => {
cb.checked = false;
});
- document.querySelectorAll('.photo-preview').forEach(img => {
+ form.querySelectorAll('.photo-preview').forEach(img => {
img.src = '';
img.style.display = 'none';
img.parentElement.classList.remove('has-photo');
@@ -1181,30 +1186,32 @@ JAVASCRIPT = """
// Get all form data
function getFormData() {
const data = {};
+ const form = document.getElementById('inventory-form');
+ if (!form) return data;
- // Text, number, date, select, textarea
- document.querySelectorAll('input[type="text"], input[type="number"], input[type="date"], select, textarea').forEach(field => {
- if (field.id) {
+ // Text, number, date, select, textarea (only within the form)
+ form.querySelectorAll('input[type="text"], input[type="number"], input[type="date"], select, textarea').forEach(field => {
+ if (field.id && field.id !== 'form-selector') {
data[field.id] = field.value;
}
});
// Checkboxes (boolean)
- document.querySelectorAll('input[type="checkbox"].boolean-field').forEach(field => {
+ form.querySelectorAll('input[type="checkbox"].boolean-field').forEach(field => {
if (field.id) {
data[field.id] = field.checked;
}
});
// Multiselect
- document.querySelectorAll('.multiselect-group').forEach(group => {
+ form.querySelectorAll('.multiselect-group').forEach(group => {
const id = group.dataset.id;
const checked = Array.from(group.querySelectorAll('input:checked')).map(cb => cb.value);
data[id] = checked;
});
// Photo
- document.querySelectorAll('.photo-preview').forEach(img => {
+ form.querySelectorAll('.photo-preview').forEach(img => {
const id = img.id;
if (img.src && !img.src.includes('data:image/svg')) {
data[id] = img.src;