form-validator
Implement client-side form validation. Automatically loads when adding form validation, handling form errors, or improving form UX.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Implement client-side form validation. Automatically loads when adding form validation, handling form errors, or improving form UX.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Generates comprehensive code documentation following JSDoc standards. Use when writing documentation, adding docstrings, or documenting APIs.
Comprehensive code review following NovaTech standards. Use when reviewing pull requests, auditing code quality, or preparing code for production deployment.
Check HTML pages for accessibility issues and WCAG 2.1 compliance. Automatically loads when working on HTML accessibility, ARIA labels, or screen reader compatibility.
| name | form-validator |
| description | Implement client-side form validation. Automatically loads when adding form validation, handling form errors, or improving form UX. |
| allowed-tools | ["Read","Write","Edit","Grep"] |
This skill provides patterns for implementing robust client-side form validation.
const EMAIL_PATTERN = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
function isValidEmail(email) {
return EMAIL_PATTERN.test(email);
}
const PHONE_PATTERN = /^[\d\s\-+()]{10,}$/;
function isValidPhone(phone) {
return PHONE_PATTERN.test(phone);
}
function isRequired(value) {
return value.trim().length > 0;
}
<div class="form-group">
<label for="email" class="form-label">
Email <span class="required">*</span>
</label>
<input
type="email"
id="email"
name="email"
class="form-input"
required
aria-describedby="email-error"
>
<span class="form-error" id="email-error" role="alert"></span>
</div>
function showError(field, message) {
const errorEl = document.getElementById(`${field.id}-error`);
field.classList.add('is-invalid');
if (errorEl) {
errorEl.textContent = message;
}
}
function clearError(field) {
const errorEl = document.getElementById(`${field.id}-error`);
field.classList.remove('is-invalid');
if (errorEl) {
errorEl.textContent = '';
}
}
field.addEventListener('blur', () => {
if (field.hasAttribute('required') || field.value) {
validateField(field);
}
});
form.addEventListener('submit', (event) => {
event.preventDefault();
const result = validateForm(form);
if (!result.isValid) {
const firstInvalid = form.querySelector('.is-invalid');
if (firstInvalid) firstInvalid.focus();
return;
}
submitForm(form);
});
| Validation | Bad | Good |
|---|---|---|
| Required | "Error" | "This field is required" |
| "Invalid" | "Please enter a valid email address" | |
| Min length | "Too short" | "Please enter at least 10 characters" |
aria-describedby to link inputs to error messagesrole="alert" on error containers