React的form表单自定义校验规则

        使用antd开发的过程中,必定会遇到需要对form表单进行必填校验的处理,正常情况下,我们都会一个空的必填校验,如下:一般我们只需要简单配置rules即可

<FormItem label="管理员姓名" {...itemLayout.wholeLine}>
   {getFieldDecorator('adminName', {
     initialValue: '',
     rules: [
       { required: true, message: '请输入管理员姓名' },
     ],
   })(
     <AInput placeholder="请输入管理员姓名" maxLength={30} />
   )}
</FormItem>

        遇到一些情况是:输入框有多个校验规则,比如说一个邮箱输入框

我们既需要:1、不为空;2、也需要邮箱格式正确;3、还需要与其他邮箱的后缀保持一致;

         这个时候我们可能需要用到自定义的校验规则:validator配置自定义校验规则

<FormItem label="管理员邮箱" {...itemLayout.wholeLine}>
  {getFieldDecorator('adminEmail', {
    initialValue: '',
    rules: [
      {
        required: true,
        whitespace: true,
        validator: this
### HTML Form 表单自定义校验方法实现 对于HTML `form`表单来说,可以通过JavaScript来增强其功能并实现复杂的验证逻辑。现代前端框架如Vue、React等提供了更高级别的抽象用于简化这些操作;然而,在纯HTML环境中,依然能够通过原生属性和事件监听器达成目标。 #### 使用HTML5内置约束验证API HTML5引入了一系列新的输入类型以及相应的属性,允许开发者轻松设置基本的验证条件而无需编写额外的脚本。例如: - `required`: 指定该字段不能为空。 - `pattern`: 定义一个正则表达式的模式,用来匹配用户的输入值。 - `min`, `max`, 和 `step`: 对于数值型数据提供范围限制。 当提交带有未满足上述任一条件的表单项时,浏览器会自动阻止提交动作,并显示默认错误提示信息给用户。 ```html <form> <label for="username">用户名:</label> <input type="text" id="username" name="username" required pattern="[a-zA-Z]{3,}" title="至少三个字母"> <button>注册</button> </form> ``` 但是有时候仅靠内建的功能可能不足以覆盖所有的业务需求,这时就需要借助JavaScript来进行更加灵活多变的定制化检验过程[^1]。 #### 利用JavaScript进行复杂校验 如果希望执行更为精细或特定场景下的验证,则可以在表单上附加`submit`事件处理器,在其中调用自定义函数完成必要的检查工作。下面是一个简单的例子展示如何结合HTML标记与JS代码共同作用以达到预期效果: ```javascript document.querySelector('form').addEventListener('submit', function(event){ const usernameField = document.getElementById('username'); // 假设这里有一个异步请求去服务器端查询用户名是否存在 fetch(`/checkUsername?name=${encodeURIComponent(usernameField.value)}`) .then(response => response.json()) .then(data => { if (!data.available) { event.preventDefault(); // 阻止表单提交 alert(`对不起,“${usernameField.value}”已经被占用`); // 或者更新DOM结构向用户提供反馈... } }); }); ``` 此段程序片段展示了怎样利用AJAX技术实现实时可用性检测的同时保持用户体验流畅度不变。当然实际应用中应当考虑更多细节比如网络延迟情况下的处理方式等等[^2]。 另外值得注意的是,在某些情况下还可以采用第三方库(如JQuery Validation Plugin)进一步简化开发流程,不过这超出了当前讨论范畴。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小灰灰学编程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值