vue3 antd项目实战——input输入框限制输入内容和长度,Form表单动态校验规则

知识调用

文章中可能会用到的知识链接
vue3+ant design vue+ts实战【ant-design-vue组件库引入】🔥🔥
js限制input输入框只能输入数字、字母等组合的正则表达式
vue3 antd项目实战——table表格(一文带你快速实现后台管理系统最常用的table表格)🔥🔥

场景复现

vue + ant design vue搭建的后台管理系统中,input输入框随处可见,关于input组件的需求也是五花八门。本期文章将以项目中的实例需求为例,详细介绍实现方案。

初始状态
在这里插入图片描述

input输入框需求:

  • 只能输入中文
  • 中文字符最多20个
  • 下方有提示文字
  • 必填项,为空时有提示文字

解决方案

文章继续沿用以往的ant design vue UI组件库(点击移步官方文档)。分四个步骤分别实现四个需求。
基础代码

<a-form>
    <a-form-item
        label="证书名称"
        name="certificates_name"
        >
        <a-input
            placeholder="请输入证书名称"
            style="width:400px"
            v-model:value="formState.certificates_name"
            />
    </a-form-item>
</a-form>

在这里输入框显然是要嵌套在表单里的。我们先双向绑定输入框的内容设置初始样式

1.下方有提示文字

这个相对而言比较简单,直接在input标签后添加p标签存放文字,css定位过去即可。

<p 
   style="
       color: rgba(0, 0, 0, 0.45);
       margin-bottom:-15px;
   "
   >请在此处输入不超过20个中文字符
</p>

实现效果
在这里插入图片描述

2.限制输入内容只能是中文

上期文章中我们分享过js中用于限制输入内容的正则表达式,刚好在这里派上用场。

<input>标签中写入以下内容

onkeyup="value=value.replace(/[^\u4E00-\u9FA5]/g,'')" 
onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\u4E00-\u9FA5]/g,''))"

在这里插入图片描述
实现效果
输入英文等其他字符无效
在这里插入图片描述
输入中文字符有效
在这里插入图片描述

3.限制输入长度为20

<input>标签中添加以下内容

maxLength='20'

在这里插入图片描述
实现效果
在这里插入图片描述

4.动态校验规则(必填项)

利用ant design vue官方文档中Form表单API中的rules双向绑定动态校验规则
在这里插入图片描述
<a-form-item>标签中添加以下内容

:rules="[{required: true, message: '名称不能为空'}]"

在这里插入图片描述
实现效果
在这里插入图片描述

input源代码(按需调整即可)

<a-form-item
            label="证书名称"
            name="certificates_name"
            :rules="[
                   {required: true, message: '名称不能为空'}
                ]"
            >
                <a-input
                    placeholder="请输入证书名称"
                    maxLength='20'
                    style="width:400px"
                    v-model:value="formState.certificates_name"
                    allow-clear
                    onkeyup="value=value.replace(/[^\u4E00-\u9FA5]/g,'')" 
                    onbeforepaste="
                        clipboardData.setData('text',clipboardData.getData('text').replace(/[^\u4E00-\u9FA5]/g,''))
                        "
                />
                <p 
                    style="
                        color: rgba(0, 0, 0, 0.45);
                        margin-bottom:-15px;
                        "
                    >请在此处输入不超过20个中文字符
                </p>
            </a-form-item>

后续将不定期持续更新相关内容~
觉得这篇文章有用的小伙伴们
可以点赞➕收藏➕关注哦~
在 Ant Design Vue (antd-vue) 中,Number 类型的 input 控件默认会有校验规则,当用户输入非数字或小数点后没有后续数值时,它会显示 "请输入有效值" 的提示。要关闭这个提示,你可以自定义输入框的验证规则,并在组件的 `rules` 属性中设置。 首先,在你的 Vue 组件里,找到处理表单验证的地方,通常是在 `<Form>` 或 `<FormItem>` 组件内。然后,你可以添加一个针对 Number 类型输入的验证规则,例如: ```html <template> <Form ref="form" :rules="customRules"> <!-- ... --> <FormItem label="数值输入" prop="decimalInput"> <InputNumber v-model.number="decimalValue" placeholder="请输入小数"></InputNumber> </FormItem> <!-- ... --> </Form> </template> <script setup> import { useForm } from &#39;ant-design-vue&#39;; const { registerFormRule } = useForm(); // 自定义的验证规则 const customRules = { decimalInput: [ { validator: validateDecimal }, { required: true, message: &#39;请输入数值&#39; } ] }; // 验证函数,如果输入不是有效的数字返回 false function validateDecimal(rule, value, callback) { if (!isNaN(parseFloat(value)) && isFinite(value)) { callback(); } else { callback(new Error(&#39;请输入有效的小数&#39;)); } } // 初始化状态 let decimalValue = &#39;&#39;; </script> ``` 在这个例子中,我们注册了一个名为 `validateDecimal` 的自定义验证器,只有当输入是合法的小数时才会通过验证,从而避免了提示。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Dorable_Wander

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

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

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

打赏作者

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

抵扣说明:

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

余额充值