事件 - htmx:validation:validate
htmx:validation:validate 是 HTMX 提供的事件,用于在请求发送前自定义字段验证逻辑。
它在每个表单字段校验时触发,可以与 elt.setCustomValidity() 方法一起使用来实现自定义验证规则,可以通过 event.preventDefault() 使该字段验证失败。
事件参数
- detail.elt - 触发请求的元素
示例代码
验证用户名不能包含 @ 或 # 符号:
<form hx-post="/submit" hx-target="#result">
<input id="username" name="username" placeholder="用户名">
<button type="submit">提交</button>
</form>
<div id="result"></div>
<script>
document.body.addEventListener("htmx:validation:validate", function(event) {
const elt = event.target;
// 只验证用户名字段
if (elt.name === "username") {
if (elt.value.includes("@") || elt.value.includes("#")) {
elt.setCustomValidity("用户名不能包含 @ 或 # 字符!");
event.preventDefault(); // 阻止该字段验证通过
} else {
elt.setCustomValidity(""); // 清除之前的验证信息
}
}
});
</script>