bulk-tag.js (2175B)
1 document.addEventListener('DOMContentLoaded', function () { 2 const fileRangeInput = document.getElementById('file_range'); 3 if (!fileRangeInput) return; 4 5 const fileForm = fileRangeInput.closest('form'); 6 if (!fileForm) return; 7 8 function updateValueField() { 9 const checkedOp = fileForm.querySelector('input[name="operation"]:checked'); 10 const valueField = fileForm.querySelector('#value'); 11 const valueLabel = fileForm.querySelector('label[for="value"]'); 12 13 if (!checkedOp || !valueField || !valueLabel) return; 14 15 if (checkedOp.value === 'add') { 16 valueField.required = true; 17 valueLabel.innerHTML = 'Value: <span style="color: red;">*</span>'; 18 } else { 19 valueField.required = false; 20 valueLabel.innerHTML = 'Value:'; 21 } 22 } 23 24 // Set up event listeners for radio buttons inside this form 25 fileForm.querySelectorAll('input[name="operation"]').forEach(function (radio) { 26 radio.addEventListener('change', updateValueField); 27 }); 28 29 // Initialize on page load 30 updateValueField(); 31 32 // Add form validation ONLY to the fileForm (won't affect the search form) 33 fileForm.addEventListener('submit', function (e) { 34 const fileRange = (fileForm.querySelector('#file_range') || { value: '' }).value.trim(); 35 const category = (fileForm.querySelector('#category') || { value: '' }).value.trim(); 36 const value = (fileForm.querySelector('#value') || { value: '' }).value.trim(); 37 const checkedOp = fileForm.querySelector('input[name="operation"]:checked'); 38 const operation = checkedOp ? checkedOp.value : ''; 39 40 if (!fileRange) { 41 alert('Please enter a file ID range'); 42 e.preventDefault(); 43 return; 44 } 45 46 if (!category) { 47 alert('Please enter a category'); 48 e.preventDefault(); 49 return; 50 } 51 52 if (operation === 'add' && !value) { 53 alert('Please enter a tag value when adding tags'); 54 e.preventDefault(); 55 return; 56 } 57 58 const rangePattern = /^[\d\s,-]+$/; 59 if (!rangePattern.test(fileRange)) { 60 alert('File range should only contain numbers, commas, dashes, and spaces'); 61 e.preventDefault(); 62 return; 63 } 64 }); 65 });