input 的 pattern 验证表单

本文详细介绍了HTML中input元素的pattern属性,解释了如何使用正则表达式进行输入验证,适用于text、search、url等类型。文章还探讨了pattern与title属性结合使用时的错误消息显示,以及如何通过JavaScript的setCustomValidity方法自定义错误提示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

pattern 用于定义验证输入正则表达式

pattern 属性适用于以下 <input> 类型:text, search, url, telephone, email 以及 password

 

需要注意的是:input的正则表达式是不需要使用 \ 来转义特殊字符的,这和js里面的正则表达式有所区别,转义了反而会报错

 

可以使用 title 属性来描述正则表达式,这样在浏览器验证表单是就会按title描述来提示错误消息

 

使用title虽然会有提示,但提示语前面会附加 “请匹配要求的格式”。如果浏览器是中文,提示语是英文,就会感觉怪怪的

这时我们可以通过setCustomValidity方法来自定义提示信息,更准确的提示给用户,但因为设置了setCustomValidity后如果不手动取消,表单就会一直提示有错误消息而无法提交,所以需要写一段js代码

<script type="text/javascript">
    function vali(obj) {
        if (obj.validity.patternMismatch === true) {
            obj.setCustomValidity($(obj).prop('title'));
        } else {
            obj.setCustomValidity('');
        }
    }
</script>

<input type="text" pattern="[a-zA-Z]+" oninvalid="vali(this);" />

上面这个方法还有一个问题,因为调用vali()函数是在oninvalid里面调用的,而oninvalid是在onsubmit中被浏览器调用的

所以执行vali()函数后submit不会再执行了,这样即使vali()里面调用了obj.setCustomValidity('');清理了错误消息,表单也还是无法提交,还需要点击一次提交按钮

所以,看具体情况,也可以使用oninput代替oninvalid,或者就只使用title属性,如果浏览器语言和提示信息语言一致的话

转载于:https://www.cnblogs.com/lbnnbs/p/11005957.html

### HTML Input 表单验证方法 HTML5 提供了一种简单而强大的方式来进行表单验证,无需额外的 JavaScript 即可完成大部分常见的验证需求。以下是几种常用的 `input` 验证属性以及它们的功能说明: #### 1. **required 属性** 该属性用于指定某个字段为必填项。如果未填写,则无法提交表单并显示相应的错误提示。 ```html <input type="text" name="username" required> ``` 此代码片段表示用户名字段不能为空[^1]。 --- #### 2. **pattern 属性** `pattern` 属性允许开发者定义正则表达式来匹配用户的输入内容。这使得复杂的自定义验证成为可能。 ```html <input type="text" name="password" pattern=".{8,}" title="密码长度至少为8位"> ``` 上述例子中,用户输入的内容必须满足最少8个字符的要求,否则会触发验证失败[^2]。 --- #### 3. **min 和 max 属性 (适用于数值型数据)** 当处理数字类型的输入框时,可以通过设置最小值 (`min`) 和最大值 (`max`) 来限定有效范围内的输入。 ```html <input type="number" name="age" min="18" max="99"> ``` 这段代码确保年龄字段只接受介于18到99之间的整数作为合法输入。 --- #### 4. **maxlength 和 minlength 属性** 这两个属性分别控制字符串的最大长度和最小长度。 ```html <input type="text" name="comment" maxlength="200" minlength="10"> ``` 这意味着评论字段最多能容纳200个字符,并且少于10个字符会被认为是非法输入。 --- #### 5. **email 类型** 专门针对电子邮件地址设计的一种输入类型,内置了基本格式校验功能。 ```html <input type="email" name="user_email"> ``` 它自动检测是否符合标准邮箱格式,比如包含 "@" 符号及域名部分。 --- #### 6. **url 类型** 类似于 email 输入类型,但专用于网址链接。 ```html <input type="url" name="homepage_url"> ``` 只有形如 http:// 或 https:// 开头的有效 URL 才可通过验证。 --- ### 完整示例代码 以下是一个综合运用多种验证技术的实际案例: ```html <form action="/submit_form" method="post"> 用户名:<br> <input type="text" name="username" required><br> 密码:<br> <input type="password" name="password" pattern=".{8,}" title="密码长度至少为8位"><br> 年龄:<br> <input type="number" name="age" min="18" max="99"><br> 电子邮箱:<br> <input type="email" name="user_email" required><br> 主页链接:<br> <input type="url" name="homepage_url"><br> 备注:<br> <textarea name="comments" maxlength="200" minlength="10"></textarea><br> <button type="submit">提交</button> </form> ``` --- ### 总结 利用 HTML5 的原生特性能够极大地简化前端开发中的表单验证流程,提升用户体验的同时也减轻了后端的压力。然而需要注意的是并非所有的浏览器都完全兼容这些新特性,在实际项目部署前应做好充分测试工作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值