Validação de formulário acessível, em cima das constraints nativas do HTML.
Valida campos usando as regras que você já escreveu no HTML (required, type="email", pattern, etc.) — sem reescrever regras de validação em JS.
Usa field.checkValidity() nativo do navegador. Por padrão valida ao perder o foco (blur) e depois em tempo real (input) uma vez que o campo já foi tocado. Mensagens de erro ganham aria-describedby automaticamente — leitor de tela anuncia o erro certo.
<form sw-valid>
<div class="sw-form-group">
<label class="sw-label">E-mail</label>
<input class="sw-input" type="email" name="email" required>
</div>
<div class="sw-form-group">
<label class="sw-label">Senha</label>
<input class="sw-input" type="password" id="senha" name="senha" required minlength="6">
</div>
<div class="sw-form-group">
<label class="sw-label">Confirmar senha</label>
<input class="sw-input" type="password" id="senha2" name="senha2" required
data-sw-error="As senhas não coincidem.">
</div>
<button class="sw-btn sw-btn-pri" type="submit">Enviar</button>
</form>
<script>
// Confirmação de senha não é uma constraint nativa — combine com setCustomValidity(),
// já que sw-valid só orquestra o checkValidity() que a própria constraint nativa usa.
const senha = document.getElementById('senha');
const senha2 = document.getElementById('senha2');
function checarSenhas() {
senha2.setCustomValidity(senha2.value !== senha.value ? 'x' : '');
}
senha.addEventListener('input', checarSenhas);
senha2.addEventListener('input', checarSenhas);
</script>
requiredtype="email"type="url"type="number" min maxminlength / maxlengthpatternNenhuma é do SW — são padrões nativos do HTML5. O sw-valid só cuida de quando/como mostrar o erro.
<form sw-valid>...</form> <!-- valida a cada tecla + ao sair do campo -->
<form sw-valid sw-valid-live="blur">...</form> <!-- só ao sair do campo (sem feedback por tecla) -->
<form sw-valid sw-valid-live="false">...</form> <!-- só ao tentar enviar o formulário -->
<input class="sw-input" name="cpf" required
pattern="\d{3}\.\d{3}\.\d{3}-\d{2}"
data-sw-error="Use o formato 000.000.000-00.">
sw-valid<form> — ativa a validaçãosw-valid-livedata-sw-errorNenhum.
sw:valid-errorsw:valid-submitSW.Valid.check(form)SW.Valid.init(form)required, type, pattern, min/max etc.).