JSFiddle - React, Tailwind, and code Playground
by Mark
HTML
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Form Input Warning</title>
<link rel="stylesheet" href="styles.css">
</head>
<body>
<form id="myForm">
<label for="textarea1">Textarea 1:</label>
<textarea id="textarea1" name="textarea1">abcde</textarea>
<label for="textarea2">Textarea 2:</label>
<textarea id="textarea2" name="textarea2">12345</textarea>
<label for="textarea3">Textarea 3:</label>
<textarea id="textarea3" name="textarea3"></textarea>
</form>
<div id="warningMessage" class="hidden">Warning: Some fields that initially had data are now empty!</div>
<script src="script.js"></script>
</body>
</html>
CSS
.hidden {
display: none;
}
#warningMessage {
color: red;
font-weight: bold;
margin-top: 20px;
}
JavaScript
document.addEventListener('DOMContentLoaded', (event) => {
const form = document.getElementById('myForm');
const textareas = form.querySelectorAll('textarea');
const warningMessage = document.getElementById('warningMessage');
// Capture the initial state of the form
const initialData = Array.from(textareas).map(textarea => textarea.value);
function checkForm() {
let warning = false;
textareas.forEach((textarea, index) => {
if (initialData[index] && textarea.value === '') {
warning = true;
}
});
if (warning) {
warningMessage.classList.remove('hidden');
} else {
warningMessage.classList.add('hidden');
}
}
// Add event listeners to each textarea field to check form state on change
textareas.forEach(textarea => {
textarea.addEventListener('input', checkForm);
});
});