HTMX - 验证
HTMX 验证与 HTML5 验证 API 配合使用,因为如果可验证的输入字段无效,它不会触发任何表单请求。这在 Ajax 请求以及 WebSockets 发送两者时也同样有效。它将围绕验证触发事件,可用于挂接自定义验证和错误处理。
- htmx:validation:validate: 用于添加自定义验证逻辑。
- htmx:validation:failed: 用于指示无效输入。
- htmx:validation:halted: 用于显示验证错误。
HTMX 验证示例
在此示例中,hx-on 属性捕获 htmx:validation:validate 事件并要求输入输出值"tutorialspoint"。请记住,所有客户端验证都应在服务器端重新完成,因为这始终可以绕过。
<form id="example-form" hx-post="/test"> <input name="example" // 重置 keyup 上的验证 onkeyup="this.setCustomValidity('')" hx-on:htmx:validation:validate="if(this.value != 'tutorialspoint') { // 设置验证错误 this.setCustomValidity('Please enter the value tutorialspoint') // 报告问题 htmx.find('#example-form').reportValidity() }" /> </form>
如何验证非表单元素?
您可以在 hx-validate 属性上设置 true 值,以在非表单元素发出任何请求之前对其进行验证。默认情况下,表单元素在发出任何请求之前都会进行验证。
非表单元素验证示例
在下面的示例中,非表单元素在发出请求之前进行验证。
- 输入字段具有 required 属性,因此是必填项。
- div 元素在被点击时使用 hx-get 向 /validate-username 发送 GET 请求。
- hx-validate="true" 属性确保在发出请求之前验证输入字段。
- 来自服务器的响应将与 ID 结果一起显示在 div 中。
<input type="text" id="username" required placeholder="Enter your username" /> <div hx-get="/validate-username" hx-validate="true" hx-trigger="click" hx-target="#result" > Validate Username </div> <div id="result"></div>