element UI form校验规则和输入限制

工作中经常遇到很多的form表单,这些表单会对input框做一些输入限制,这个案例是element UI引入的el-form,限制输入数字,长度,数字大小等。

1.展示效果

1.1 CPU行大小超出范围提醒,内存行输入不是数字提醒,硬盘行符合规则。
在这里插入图片描述
1.2 点击确认提交数据时,控制台会输出黄色警告,提示不满足条件
在这里插入图片描述

2.实现
2.1 el-form的引入和绑定数据
<el-form
    label-width="80px"
     :model="auto_alarm_cfg"   //数据双向绑定
     :rules="cfg_rules"    //绑定规则
     ref="cfg_form"
   >
     <el-form-item label="CPU" prop="cpu">
       <el-input
         v-model.number="auto_alarm_cfg.cpu"   
          //修饰符限制输入为数字(若不限制,输入数字也会默认为string类型去做验证)
         :value="auto_alarm_cfg.cpu | intNumber"
        // intNumber 为筛选器filters内定义的取整方法 ,下面就不写了,注释在这里,需要的话复制到filters内
        //   filters: {
		//		intNumber(value) {
  		//			return Number.parseInt(value);
		//		 },
		//	},
       />
     </el-form-item>
     <el-form-item label="内存" prop="memory">
       <el-input
         v-model.number="auto_alarm_cfg.memory"
         :value="auto_alarm_cfg.memory | intNumber"
       />
     </el-form-item>
     <el-form-item label="硬盘" prop="storge">
       <el-input
         v-model.number="auto_alarm_cfg.storge"     
         :value="auto_alarm_cfg.storge | intNumber"
       />
     </el-form-item>
     <el-form-item>
       <el-button
         type="primary"
         @click="submitSelfConfig"
         :disabled="cfg_disable"
         >确定</el-button
       >
     </el-form-item>
 </el-form>
2.2.js部分 data中的数据绑定,规则定义,规则绑定
 export default{
	 data(){
	 //定义规则NumberPattern,限制输入0-100的整数,将在cfg_rules中引用
	 const NumberPattern = new RegExp(/^([1-9]?\d|100)$/);  
		return {
    		auto_alarm_cfg: {  //数据绑定
		        cpu: null,
		        memory: null,
		        storge: null,
	     	 },
	     	       cfg_rules: { //规则绑定
	        cpu: [
	          { required: !0, message: "不能为空" },
	          { type: "number", message: "必须为数字", trigger: "blur" },
	          {
	            pattern: NumberPattern,
	            message: "0-100之间的整数",
	            trigger: "blur",
	          },
	        ],
	        memory: [
	          { required: !0, message: "不能为空" },
	          { type: "number", message: "必须为数字", trigger: "change" },
	          {
	            pattern: NumberPattern,
	            message: "0-100之间的整数",
	            trigger: "blur",
	          },
	        ],
	        storge: [
	          { required: !0, message: "不能为空" },
	          { type: "number", message: "必须为数字", trigger: "change" },
	          {
	            pattern: NumberPattern,
	            message: "0-100之间的整数",
	            trigger: "blur",
	          },
	        ],
	      },
    	 }
	}
 }
3.注意点
3.1 表格数据绑定时,如果验证的是数字,最好使用修饰符,防止用户输入数字,但是默认为字符串,然后提交表格时,会报错输入的不是数字。
3.2 每一个Input框的验证,对应了一个数组,这个数组可以有多个对象,也就是说可以同时设置多个规则
3.3 :rules绑定规则,prop绑定了rules对应哪个input框(即v-model属性和prop名称必须一致,v-model的CPU对应rules中的CPU)

补充:

1.绑定oninput,直接限制输入内容

举例:告警设置上下限

     <el-form-item
          label="告警下限"
          class="self-inline"
          prop="lowervalue"
        >
          <!-- <el-input v-model="reviewLowervalue" :readonly="bat_readonly" /> -->
          <el-input
            v-model.number="bat_data.lowervalue"
            oninput="if(value>9999999){value=9999999}else if(value<-9999999){value=-9999999}"
          />
    </el-form-item>
2.绑定键盘事件,限制输入特殊字符

举例:

  <div class="DPbody">
      <span>备&emsp;&emsp;注:</span>
      <el-input
        type="text"
        show-word-limit
        v-model="desInfo"
        size="mini"
        maxlength="30"
        @keyup.native="btKeyUp"
      ></el-input>
</div>

methods:{
	btKeyUp(e) {
 		 e.target.value = e.target.value.replace(
   		 /[`~!@#$%^&*()_\-+=<>?:"{}|,.\/;‘\\[\]·~!@#¥%……&*()——\-+={}|《》?:“”【】、;‘’,。、]/g,
   		 "");
	 },
}
3.点击按钮才验证,blur不验证

需求:必填项为空,失去焦点,也不提示,表单也不能标红,失去焦点只能校验其他规则,比如邮箱格式,手机号格式等,当点击提交或确定按钮,所有为空的表单给出提示,且标红。实现的方法是三目绑定validate-event。

<el-form
      :model="networkForm"
      class="form"
      :rules="netFormRules"
      ref="networkForm"
      :disabled="isViews ? true : false"
    >
      <el-form-item label="网络名称" label-width="100px" prop="name">
        <el-input
          v-model="networkForm.name"
          style="width: 500px"
          :validate-event="networkForm.name == '' ? false : true"
        ></el-input>
      </el-form-item>
      <el-form-item label="网络类型" label-width="100px" prop="net_type">
        <el-select
          v-model="networkForm.net_type"
          placeholder="请选择网络类型"
          style="width: 200px"
           :validate-event="networkForm.net_type == '' ? false : true"
        >
          <el-option
            v-for="item in networkTypeList"
            :key="item.id"
            :label="item.label"
            :value="item.id"
          >
          </el-option>
        </el-select>
      </el-form-item>
      <el-form-item style="text-align: right; margin-right: 50px">
        <el-button @click="networkSubmit" size="small" type="primary"
          >确定</el-button
        >
      </el-form-item>
    </el-form>
    
export default{
	data(){
		return :{
			     netFormRules: {
			        name: [{ required: !0, message: "网络名称不能为空" }],
			        net_type: [{ required: !0, message: "网络类型不能为空" },trigger: 'blur'],
  				},
		}
	}
}

备注:在需求的input框绑定validate-event,若为选择框,还需要把校验的触发事件设置为blur
  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Element UI 是一个基于 Vue.js 的前端组件库,其中包含了表单校验功能。可以通过在表单元素上设置 "rules" 属性来实现校验。例如: ``` <el-form ref="form" :rules="rules" > <el-form-item label="用户名" prop="username"> <el-input v-model="form.username" placeholder="请输入用户名"></el-input> </el-form-item> <el-form-item label="密码" prop="password"> <el-input v-model="form.password" placeholder="请输入密码"></el-input> </el-form-item> <el-form-item> <el-button type="primary" @click="submitForm('form')">提交</el-button> </el-form-item> </el-form> ``` 其中 rules 是一个数组,里面包含了校验规则对象,例如: ``` data() { return { form: { username: '', password: '' }, rules: { username: [ { required: true, message: '请输入用户名', trigger: 'blur' }, { min: 3, max: 5, message: '长度在 3 到 5 个字符', trigger: 'blur' } ], password: [ { required: true, message: '请输入密码', trigger: 'blur' }, { min: 6, max: 10, message: '长度在 6 到 10 个字符', trigger: 'blur' } ] } } }, ``` 然后提交表单时调用 this.$refs.form.validate() 方法进行校验,如果校验失败会返回一个 false,可以根据返回值来判断表单是否通过校验。 ``` methods: { submitForm(formName) { this.$refs[formName].validate((valid) => { if (valid) { alert('submit!'); } else { console.log('error submit!!'); return false; } });Element UI 是一个基于 Vue.js 的前端 UI 组件库,它提供了一组丰富的表单组件,可以方便地进行表单校验。通常可以使用其中的 el-form 和 el-form-item 组件进行校验。可以在 el-form 上设置 rules 属性来配置校验规则,在 el-form-item 上设置 prop 属性来指定其对应的表单字段。例如: ``` <el-form ref="form" :rules="rules" v-model="formData"> <el-form-item label="用户名" prop="username"> <el-input v-model="formData.username"></el-input> </el-form-item> <el-form-item label="密码" prop="password"> <el-input v-model="formData.password"></el-input> </el-form-item> <el-form-item> <el-button type="primary" @click="submitForm">提交</el-button> </el-form-item> </el-form> ``` 然后在data 中的 rules 设置校验规则: ``` data() { return { formData: { username: '', password: '' }, rules: { username: [ { required: true, message: '请输入用户名', trigger: 'blur' }, { min: 3, max: 5, message: '长度在 3 到 5 个字符', trigger: 'blur' } ], password: [ { required: true, message: '请输入密码', trigger: 'blur' }, { min: 6, max: 10, message: '长度在 6 到 10 个字符', trigger: 'blur' } ] } } } ``` 在提交表单时调用this.$refs.form.validate()进行校验校验通过后进行下一步操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值