antd formItem 表单验证

单行展示两个字段,都需要必填验证,formItem一个label对一个字段,默认的排版不足以满足需求,经过思考,稍加变通一下,实现效果如下:在这里插入图片描述

<a-form-model ref="ruleForm" :model="ruleForm" :rules="rules" v-bind="formItemLayout">
   <a-form-model-item label="集装箱号段" prop="code">
     <a-row>
       <a-col :span="10">
         <a-form-model-item prop="codeStart" style="margin-bottom: 0 !important">
           <a-input v-model="ruleForm.codeStart" autocomplete="off" placeholder="请输入开始号段" />
         </a-form-model-item>
       </a-col>
       <a-col :span="4"><span class="item-node-line"></span></a-col>
       <a-col :span="10">
         <a-form-model-item prop="codeEnd" style="margin-bottom: 0 !important">
           <a-input v-model="ruleForm.codeEnd" autocomplete="off" placeholder="请输入结束号段" />
         </a-form-model-item>
       </a-col>
     </a-row>
   </a-form-model-item>
   <a-form-model-item label="集装箱自重(KG)" prop="weight">
     <a-input v-model="ruleForm.weight" autocomplete="off" placeholder="请输入集装箱自重(KG)" />
   </a-form-model-item>
 </a-form-model>

利用a-row a-col将字段在一行展示,codeStart codeEnd自定义校验。

data() {
    const validateCode = (rule, value, callback) => {
      if (!value) {
        return callback(new Error('4位字母+6位数字'))
      } else {
        const reg = /^[0](\.\d+)$|^[1-9]*(\.\d+)?$/g
        if (!reg.test(value)) {
          return callback(new Error('4位字母+6位数字'))
        }
        callback()
      }
    }
    const validateWeight = (rule, value, callback) => {
      if (!value) {
        return callback(new Error('此项为必填项'))
      } else {
        const reg = /^[0](\.\d+)$|^[1-9]*(\.\d+)?$/g
        if (!reg.test(value)) {
          return callback(new Error('请输入大于0的数字'))
        }
        callback()
      }
    }
    return {
      ruleForm: {
        code: 'code', // 占位用的 无实际用处,只为在"集装箱号段"前面加必填标识红色的星号
        codeStart: '',
        codeEnd: '',
        weight: ''
      },
      rules: {
        code: [{ required: true, trigger: 'change' }],
        codeStart: [{ validator: validateCode, trigger: 'blur' }],
        codeEnd: [{ validator: validateCode, trigger: 'blur' }],
        weight: [{ required: true, validator: validateWeight, trigger: 'blur'      		}]
      },
      formItemLayout: {
        labelCol: { span: 6 },
        wrapperCol: { span: 16 }
      }
    }
  }

以上总结是写给别人更是写给自己,如有不对的地方或者更好的方法,欢迎留言交流,在探索的路上与君共勉!

Ant Design 中,可以使用 Form 组件的 validateFields 方法来进行表单验证。在验证通过后,再进行表单提交操作。 示例代码如下: ``` import { Form, Button, message } from 'antd'; const Demo = () => { const [form] = Form.useForm(); const handleSubmit = () => { form.validateFields() .then(values => { console.log(values); // 在这里进行表单提交操作 message.success('提交成功'); }) .catch(error => { console.log(error); message.error('提交失败'); }); } return ( <Form form={form}> <Form.Item name="username" rules={[{ required: true, message: '请输入用户名' }]} > <Input placeholder="请输入用户名" /> </Form.Item> <Form.Item name="password" rules={[{ required: true, message: '请输入密码' }]} > <Input.Password placeholder="请输入密码" /> </Form.Item> <Button onClick={handleSubmit}>提交</Button> </Form> ); } ``` 在上面的例子中,当用户点击提交按钮时,会触发 handleSubmit 函数。在 handleSubmit 函数中,首先调用 form.validateFields() 方法进行表单验证。如果验证通过,则打印表单数据到控制台,并进行表单提交操作,并使用 message.success() 方法提示用户提交成功。如果验证不通过,则使用 message.error() 方法提示用户提交失败。 需要注意的是,validateFields 方法返回一个 Promise 对象,因此需要使用 .then() 和 .catch() 方法来处理验证结果。在 .then() 方法中,可以获取到验证通过后的表单数据。在 .catch() 方法中,可以获取到验证失败的具体错误信息。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

前端李易安

打赏1元鼓励作者

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

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

打赏作者

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

抵扣说明:

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

余额充值