JavaScript
// Method 1: Form submission
const form = document.getElementById('myForm');
form.addEventListener('submit', function(e) {
e.preventDefault(); // Prevent default submission
console.log('Form submitted');
const formData = new FormData(form);
console.log('Form data:', Object.fromEntries(formData));
});
// Method 2: Input events
const input = document.getElementById('myInput');
input.addEventListener('input', function(e) {
console.log('Input value:', e.target.value);
});
input.addEventListener('change', function(e) {
console.log('Value changed:', e.target.value);
});
input.addEventListener('focus', function(e) {
console.log('Input focused');
e.target.style.borderColor = 'blue';
});
input.addEventListener('blur', function(e) {
console.log('Input blurred');
e.target.style.borderColor = '';
// Validate on blur
validateInput(e.target);
});
// Method 3: Real-time validation
input.addEventListener('input', function(e) {
const value = e.target.value;
if (value.length < 3) {
e.target.setCustomValidity('Must be at least 3 characters');
} else {
e.target.setCustomValidity('');
}
});
// Method 4: Select element
const select = document.getElementById('mySelect');
select.addEventListener('change', function(e) {
console.log('Selected:', e.target.value);
});
// Method 5: Checkbox
const checkbox = document.getElementById('myCheckbox');
checkbox.addEventListener('change', function(e) {
console.log('Checked:', e.target.checked);
});
// Method 6: Radio buttons
const radios = document.querySelectorAll('input[type="radio"]');
radios.forEach(radio => {
radio.addEventListener('change', function(e) {
if (e.target.checked) {
console.log('Selected:', e.target.value);
}
});
});
// Method 7: Textarea
const textarea = document.getElementById('myTextarea');
textarea.addEventListener('input', function(e) {
const length = e.target.value.length;
console.log('Character count:', length);
if (length > 100) {
e.target.style.color = 'red';
} else {
e.target.style.color = '';
}
});
// Method 8: Form validation
form.addEventListener('submit', function(e) {
e.preventDefault();
const email = form.querySelector('#email').value;
const password = form.querySelector('#password').value;
if (!email.includes('@')) {
alert('Invalid email');
return;
}
if (password.length < 8) {
alert('Password must be at least 8 characters');
return;
}
console.log('Form is valid');
// Submit form
});
// Method 9: Reset event
form.addEventListener('reset', function(e) {
console.log('Form reset');
});
// Method 10: Invalid event
input.addEventListener('invalid', function(e) {
e.preventDefault();
console.log('Invalid input');
showError(e.target, 'Please enter a valid value');
});Output
// Output depends on form interaction
Form events handle user input and submission.
Event Types
- submit: Form submitted
- reset: Form reset
- input: Value changed (real-time)
- change: Value changed (on blur)
- focus: Element focused
- blur: Element blurred
- invalid: Validation failed
Form Elements
- input: Text, email, password, etc.
- textarea: Multi-line text
- select: Dropdown
- checkbox: Boolean input
- radio: Single choice
Validation
- HTML5 validation
- Custom validation
- Real-time feedback
- Error messages
Best Practices
- Prevent default on submit
- Validate on blur
- Show errors clearly
- Use FormData for collection