"Vleermuizen in nood: samen bouwen aan een duurzame toekomst"
Gebouwbewonende vleermuizen staan onder druk in Nederland. Door renovaties en isolatiewerkzaamheden verdwijnen hun leefgebieden steeds vaker. Populaties laatvlieger en meervleermuis kennen een negatieve populatietrend; de aantallen nemen en sommige leefgebieden worden verlaten.
Gebouwbewonende vleermuissoorten zoals laatvlieger, meervleermuis en gewone dwergvleermuis maken vooral gebruik van de buitenschil (o.a. spouwmuur, dak, ruimte achter betimmering) van onze huizen. De delen van een gebouw met vleermuizen worden beschouwd als verblijfplaatsen, en zijn jaarrond beschermd. Verandering van de kwaliteit van de verblijfplaats, door bijvoorbeeld renovatie, kan voor vleermuizen negatieve effecten hebben. In sommige gemeentes worden steeds vaker zorgelijke gaten in de verspreiding geconstateerd. Beleid dat verduurzaming bevordert, negeert vaak de nood van deze dieren. Jouw donatie kan helpen om hun toekomst veilig te stellen en een leefbare omgeving voor zowel mens als vleermuis te creëren.
Tegenstrijdige beleidsregels
Naarmate de verduurzaming in deze steden vordert, neemt de leefruimte voor gebouwbewonende vleermuizen af. Veel van deze problemen worden veroorzaakt door tegenstrijdige beleidsregels. Enerzijds is er het verduurzamingsbeleid, maar dat bevat vaak geen effectieve maatregelen voor vleermuizen. Huiseigenaren worden geconfronteerd met financiële lasten, maar krijgen geen ondersteuning als vleermuizen in hun woning verblijven.
Regulier onderzoek kan beter
Soortbescherming en het navolgen van wetgeving wordt vergemoeilijkt door het soms ontbreken van ecologische kennis over de soorten. Met reguliere onderzoekssprotocollen worden steeds grotere gebieden onderzocht. Hoe kleiner de kolonie (of subkolonie) hoe kleiner de trefkans, wat betekent dat sommige soorten relatief vaak worden gemist.
Onze doelen
De Vleermuiswerkgroep Nederland zet zich in om het belang van gebouwbewonende vleermuizen regelmatig onder de aandacht te brengen. We doen dit door voorlichting, bundeling van kennis, onderzoek en samenwerking met diverse partijen. Hopelijk kunnen we op deze manier een groene woonomgeving behouden waar zowel mensen als vleermuizen zich thuis voelen.
Steun is hard nodig
Onze acties kosten veel tijd en geld. Met uw bijdrage kunnen we belangrijke projecten realiseren. Uw donatie kan daarbij een groot verschil maken!
Geplande actie 2026
Op dit moment bestaat er nog geen grote gebieden protocol voor de meervleermuis. Dit betekent dat adviesbureaus per gebied zelf invulling moeten geven aan methodiek en inspanning. Onhandig, tijdsintensief. Een nieuw protocol zal altijd leiden tot vragen bij het bevoegd gezag, en zorgt dus voor vertraging. Met een kleine set experts willen we voor start veldseizoen 2026 een protocol voor de meervleermuis samenstellen. Daar hebben de vleermuizen voordeel bij, maar ook de onderzoekers.
€ 10,00
€ 40,00
€ 80,00
€
Jaarlijks
';
}
return;
}
document.getElementById('child-campaigns-list').insertAdjacentHTML('beforeend', data.html);
childCampaignsPage++;
if (btn) {
btn.disabled = false;
btn.innerText = 'JD_LOAD_MORE';
if (!data.hasMore) {
btn.style.display = 'none';
}
}
})
.catch(() => {
if (btn) {
btn.disabled = false;
btn.innerText = 'JD_LOAD_MORE';
}
});
}
document.addEventListener('DOMContentLoaded', function() {
loadChildCampaigns();
var loadMoreBtn = document.getElementById('load-more-child-campaigns');
if (loadMoreBtn) {
loadMoreBtn.addEventListener('click', loadChildCampaigns);
}
// Initialize field dependencies
initializeFieldDependencies();
});
/**
* Initialize and handle field dependencies
*/
function initializeFieldDependencies() {
// Find all fields that have dependencies
var dependentFields = document.querySelectorAll('[data-depend-on-field-id]');
if (dependentFields.length === 0) {
return;
}
// Build a map of parent field IDs to dependent fields
var dependencyMap = {};
dependentFields.forEach(function(fieldContainer) {
var parentFieldId = fieldContainer.getAttribute('data-depend-on-field-id');
var dependOnOptions = fieldContainer.getAttribute('data-depend-on-options');
var options = [];
if (dependOnOptions) {
try {
options = JSON.parse(dependOnOptions);
} catch (e) {
console.error('Failed to parse depend_on_options JSON:', e);
}
}
if (!dependencyMap[parentFieldId]) {
dependencyMap[parentFieldId] = [];
}
// Store the original display value - temporarily remove the attribute that triggers CSS hiding
if (!fieldContainer.hasAttribute('data-original-display')) {
// Temporarily remove the data attribute to bypass CSS hiding rule
var dependOnFieldId = fieldContainer.getAttribute('data-depend-on-field-id');
if (dependOnFieldId) {
fieldContainer.removeAttribute('data-depend-on-field-id');
}
// Now get the natural display value
var computedDisplay = window.getComputedStyle(fieldContainer).display;
if (computedDisplay && computedDisplay !== 'none') {
fieldContainer.setAttribute('data-original-display', computedDisplay);
} else {
// If still none, use block as default
fieldContainer.setAttribute('data-original-display', 'block');
}
// Restore the attribute
if (dependOnFieldId) {
fieldContainer.setAttribute('data-depend-on-field-id', dependOnFieldId);
}
}
dependencyMap[parentFieldId].push({
container: fieldContainer,
options: options
});
});
// For each parent field, attach change listeners
Object.keys(dependencyMap).forEach(function(parentFieldId) {
// Find the parent field container using data-field-id attribute
//var parentFieldContainer = document.querySelector('[data-field-id="' + parentFieldId + '"]');
var parentField = document.querySelector('[data-field-id="' + parentFieldId + '"]');
var parentFieldContainer = parentField ? parentField.closest('.donationfields') : null;
//alert(parentFieldContainer);
if (parentFieldContainer) {
// Find the input elements within the parent field
var parentInputs = parentFieldContainer.querySelectorAll('input[type="radio"], input[type="checkbox"], select');
parentInputs.forEach(function(input) {
input.addEventListener('change', function() {
updateDependentFields(parentFieldId, dependencyMap[parentFieldId]);
});
});
// Initial state on page load
updateDependentFields(parentFieldId, dependencyMap[parentFieldId]);
}
});
}
/**
* Update visibility of dependent fields based on parent field value
*/
function updateDependentFields(parentFieldId, dependents) {
// Get selected values from parent field
var selectedValues = getFieldSelectedValues(parentFieldId);
// Update each dependent field
dependents.forEach(function(dependent) {
var shouldShow = false;
if (dependent.options.length === 0) {
// If no specific options are required, show if parent has any value
shouldShow = selectedValues.length > 0;
} else {
// Check if any selected value matches the required options
for (var i = 0; i < selectedValues.length; i++) {
if (dependent.options.indexOf(selectedValues[i]) !== -1) {
shouldShow = true;
break;
}
}
}
// Show or hide the field
if (shouldShow) {
// Restore original display value or use block as fallback
var originalDisplay = dependent.container.getAttribute('data-original-display') || 'block';
dependent.container.style.display = originalDisplay;
// Enable validation for required fields when shown
var inputs = dependent.container.querySelectorAll('input, select, textarea');
inputs.forEach(function(input) {
if (input.hasAttribute('data-was-required')) {
var validationClass = input.getAttribute('data-was-required');
if (input.className.indexOf(validationClass) === -1) {
input.className += ' ' + validationClass;
}
}
});
} else {
dependent.container.style.display = 'none';
// Disable validation for hidden fields
var inputs = dependent.container.querySelectorAll('input, select, textarea');
inputs.forEach(function(input) {
// Store original validation class
var classes = input.className.match(/validate\[[^\]]+\]/);
if (classes && classes.length > 0) {
input.setAttribute('data-was-required', classes[0]);
input.className = input.className.replace(/validate\[[^\]]+\]/g, '');
}
});
}
});
}
/**
* Get selected values from a field (works with radio, checkbox, select)
*/
function getFieldSelectedValues(fieldId) {
var values = [];
var field = document.querySelector('[data-field-id="' + fieldId + '"]');
if (!field) {
console.warn('Field not found!');
return values;
}
if (field.tagName === 'SELECT') {
if (field.value) {
values.push(field.value);
}
} else if (field.type === 'radio') {
var radioButtons = document.querySelectorAll('input[name="' + field.name + '"]');
radioButtons.forEach(function(radio) {
if (radio.checked) {
values.push(radio.value);
}
});
} else if (field.type === 'checkbox') {
var checkboxes = document.querySelectorAll('input[name="' + field.name + '"]');
checkboxes.forEach(function(checkbox) {
if (checkbox.checked) {
values.push(checkbox.value);
}
});
} else {
if (field.value) {
values.push(field.value);
}
}
//console.log('Extracted values:', values);
return values;
}