el-input (vue3总结)

一基本使用

校验:输入不是数据 清空并提示(最多9位,点击其他处进行校验)

<el-form-item label="展示序号:" :prop="EFormPropKeys.ORDER_NO">
            <el-input
              v-model="createForm[EFormPropKeys.ORDER_NO]"
              placeholder="请输入展示序号"
              class="w300"
              @blur="handleNumBlur(createForm, EFormPropKeys.ORDER_NO)"
              maxlength="9"
              show-word-limit
              clearable
            />
          </el-form-item>



  const handleNumBlur = (item, key) => {
    if (!validatePositiveInteger(item[key])) {
      ElMessage.warning("请输入正确的数字")
      item[key] = ""
    }
  }


/**
 * 校验是否为正整数
 */
 function validatePositiveInteger(input) {
  console.log(input, "input-----")
  const regex = /^\d+$/
  return regex.test(input)
}

二 vue3项目中el-input内搜索的icon图标绑定点击事件

vue3项目中el-input内搜索的icon图标绑定点击事件-CSDN博客

三  修改el-input 边框的颜色

  <div
              style="display: flex; align-items: center"
              :class="{ 'is-invalid': isInputInvalid }"
            >
              <el-input
                v-if="item.editHeader"
                v-model="item.name"
                @blur="handleBlurHeader(item)"
                size="small"
                placeholder="请输入内容"
              />
</div>



:deep(.is-invalid .el-input) {
  --el-input-border-color: red;
  --el-input-hover-border-color: red;
  --el-input-focus-border-color: red;
}

3.1不使用el-form单独给el-input设置表单校验,自定义input表单校验

有时候我们需求只需要对一个input进行校验,el-form的校验需要定义各种规则,然后prop,所以干脆放弃el-form的校验,直接手搓一个校验即可.同样的思路应该也可以用于普通的input, 见下方代码

<template>
  <div>
    <el-input
      v-model="inputValue"
      :class="{ 'is-invalid': isInputInvalid }"
      placeholder="请输入内容"
      @blur="validateInput"
    ></el-input>
    <span v-if="isInputInvalid" class="error-message">{{ inputErrorMessage }}</span>
    <el-button type="primary" @click="submitForm">提交</el-button>
  </div>
</template>

<script>
export default {
  data() {
    return {
      inputValue: '',
      isInputInvalid: false,
      inputErrorMessage: ''
    };
  },
  methods: {
    
    validateInput() {
      // 根据自定义的校验规则进行校验
      if (this.inputValue === '') {
        this.isInputInvalid = true;
        this.inputErrorMessage = '内容不能为空';
      } else if (this.inputValue.length < 5 || this.inputValue.length > 10) {
        this.isInputInvalid = true;
        this.inputErrorMessage = '内容长度应在 5 到 10 之间';
      } else {
        this.isInputInvalid = false;
        this.inputErrorMessage = '';
      }
    },
    submitForm() {
      // 在提交表单时再次触发校验,确保校验结果
      this.validateInput();

      // 如果校验通过,则进行后续的表单提交操作
      if (!this.isInputInvalid) {
        // 表单提交操作
      }
    },
      closeDialog() {
      // 关闭dialog
      // 重置表单数据和校验历史
      this.appname = '';
      this.isInputInvalid = false;
      this.inputErrorMessage = '';
    },
  }
};
</script>

<style>
.error-message {
  color: red;
}

//vue3
:deep(.is-invalid .el-input) {
  --el-input-border-color: red;
  --el-input-hover-border-color: red;
  --el-input-focus-border-color: red;
}
</style>


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值