Form Validation 表单校验v2.0.6+
基于 htmx 事件链的表单校验扩展。支持 HTML5 原生约束(required/pattern/minlength 等)和自定义 data-rules,校验失败阻止请求并显示错误提示。
基础用法
- Preview
- Code
点击提交触发校验:错误字段标红、显示提示、阻止表单提交。修正后实时清除错误。
<form hx-ext="bny-validate" style="max-width:420px;">
<div class="form-item">
<label>用户名</label>
<input class="bny-input" name="user" required
data-msg-required="请输入用户名">
</div>
<div class="form-item">
<label>邮箱</label>
<input class="bny-input" type="email" name="email" required
data-msg-required="邮箱必填"
data-msg-type="邮箱格式不正确">
</div>
<div class="form-item">
<label>密码</label>
<input class="bny-input" type="password" name="pwd"
required minlength="6"
data-msg-min="密码至少 6 位">
</div>
<div class="form-item">
<label>确认密码</label>
<input class="bny-input" type="password" name="pwd2"
data-rules="equals:pwd"
data-msg-equals="两次密码不一致">
</div>
<button class="bny-btn" type="submit">提交</button>
</form>
自定义规则 data-rules
- Preview
- Code
<!-- 长度规则 -->
<input required data-rules="min:3,max:20">
<!-- 数值范围 -->
<input type="number" required data-rules="min-val:18,max-val:99">
<!-- 正则 -->
<input required data-rules="regexp:^1[3-9]\d{9}$">
配合 HTMX 提交
- Preview
- Code
校验通过后才会发起 hx-post 请求,结果回填到下方。失败时阻止提交并标红。
<form hx-ext="bny-validate"
hx-post="/api/save"
hx-target="#result" hx-swap="innerHTML">
<div class="form-item">
<label>用户名</label>
<input class="bny-input" name="user" required
data-msg-required="请输入用户名">
</div>
<div class="form-item">
<label>邮箱</label>
<input class="bny-input" type="email" name="email" required
data-msg-required="请输入邮箱">
</div>
<button class="bny-btn" type="submit">提交</button>
</form>
<div id="result"></div>
API
属性
| 属性 | 说明 |
|---|---|
hx-ext="bny-validate" | 启用表单校验 |
required | HTML5 必填 |
data-msg-required | 必填错误消息 |
data-msg-type | 类型错误消息 |
data-msg-pattern | 正则错误消息 |
data-msg-min | 最小值/最短错误消息 |
data-msg-max | 最大值/最长错误消息 |
data-msg | 通用兜底消息 |
data-rules | 自定义规则,逗号分隔,如 min:3,max:20,regexp:^...$ |