Element表单input框,复合型输入框嵌入按钮样式修改

需求:input框内部嵌入按钮

 用element复合型输入框可实现初步效果,遇到一点坑。

1. 悬停时input框的聚焦效果,内嵌的按钮没有

2.点击输入时,input聚焦效果,内嵌的按钮依旧没有

效果图:鼠标悬停时/ input输入内容时

 

 

<el-form-item prop="verifyCode">
                  <el-input
                    class="phoneCodeV"
                    v-model="phoneLogin.verifyCode"
                    @focus="handleInputFocus"
                    @blur="handleInputBlur"
                    auto-complete="new-password"
                    placeholder="请输入手机验证码"
                    clearable
                  >
                    <template slot="append"> //插槽插入文字按钮
                      <el-button 
                      class="phoneCode"
                      type="text"
                      :disabled="coolDown"
                      @click="getVerCode()"
                        > {{ coolDown ? `${totalTime}s` : '获取验证码' }}</el-button
                      >
                    </template>
                  </el-input>
                </el-form-item>

css

/deep/.phoneCodeV {
            input { 
              border-right: none; // 去掉插槽按钮和input中的边框
            }
            &:hover {
                // input 悬停时,插槽聚焦效果
              .el-input-group__append, .el-input-group__prepend {
                border-color: #4568ee !important;
                background: #fff !important;
              }
            }
          }

          .phoneCode {
            width: 80px;
            padding: 10px 10px 10px 0px;
            border: none; // 去掉插槽按钮和input中的边框
            background: rgba(233, 237, 246, 0.5);
            &:hover {
              background: rgba(233, 237, 246, 0.5) !important;
            }
          }

        // 修改获取验证码插槽里文字颜色
           /deep/ .el-input-group__append,
            .el-input-group__prepend {
              color: #4568ee;
             }

js控制input聚焦、失焦时,给插槽添加边框

// 输入框聚焦、失焦事件
    handleInputFocus() {
      let appendEle = document.getElementsByClassName("el-input-group__append")[0]
      appendEle.style.borderColor = "#4568ee"
    },
    handleInputBlur() {
      let appendEle = document.getElementsByClassName("el-input-group__append")[0]
      appendEle.style.borderColor = "#DCDFE6"
    },

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用 element-ui 表单验证来实现复合型输入框的校验。 1. 首先,在模板使用 element-ui 提供的表单组件,例如 `el-form`、`el-input`、`el-button` 等。 2. 接着,给需要校验的输入框绑定 `rules` 属性,该属性是一个数组,用于存放校验规则。例如: ```html <el-form ref="form" :model="form"> <el-form-item label="用户名" prop="username"> <el-input v-model="form.username" :rules="usernameRules"></el-input> </el-form-item> <el-form-item label="密码" prop="password"> <el-input v-model="form.password" :rules="passwordRules" type="password"></el-input> </el-form-item> <el-form-item> <el-button type="primary" @click="submitForm">提交</el-button> </el-form-item> </el-form> ``` 3. 在组件的 `data` 定义校验规则,例如: ```javascript data() { return { form: { username: '', password: '' }, usernameRules: [ { required: true, message: '用户名不能为空', trigger: 'blur' }, { min: 6, max: 20, message: '用户名长度在 6 到 20 个字符', trigger: 'blur' } ], passwordRules: [ { required: true, message: '密码不能为空', trigger: 'blur' }, { min: 6, max: 20, message: '密码长度在 6 到 20 个字符', trigger: 'blur' } ] } } ``` 4. 在组件的 `methods` 定义提交表单的方法,例如: ```javascript methods: { submitForm() { this.$refs.form.validate(valid => { if (valid) { // 表单校验通过,执行提交操作 } else { // 表单校验不通过,提示错误信息 } }) } } ``` 在提交表单时,使用 `this.$refs.form.validate()` 方法进行校验,该方法会返回一个 Boolean 值,表示表单校验是否通过。如果校验不通过,可以使用 `this.$message.error()` 方法提示错误信息。 以上就是使用 element-ui 实现复合型输入框校验的基本步骤。需要注意的是,上述示例的校验规则只是一个简单的示例,具体的校验规则可以根据实际需求进行定义。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值