el-input 嵌套 el-button实现验证码发送
时间: 2023-07-07 15:10:06 浏览: 274
你可以在 `el-input` 中添加一个 `el-button` 来实现发送验证码的功能,具体实现步骤如下:
1. 在 `el-input` 中使用 `v-model` 双向绑定一个手机号码变量 `phone`,并设置 `type` 属性为 `tel`。
```html
<el-input v-model="phone" type="tel" placeholder="请输入手机号"></el-input>
```
2. 在 `el-input` 的右侧添加一个 `el-button`,并绑定一个发送验证码的方法 `sendCode`。
```html
<el-input v-model="phone" type="tel" placeholder="请输入手机号">
<el-button slot="append" @click="sendCode">{{ buttonText }}</el-button>
</el-input>
```
3. 在 `data` 中定义一个按钮文本变量 `buttonText`,初始值为 `发送验证码`,在发送验证码时将其修改为倒计时的文本。
```javascript
data() {
return {
phone: '',
buttonText: '发送验证码',
};
},
```
4. 实现 `sendCode` 方法,在其中调用后端接口发送验证码,并在发送成功后启动一个倒计时,倒计时结束后将按钮文本重置为 `发送验证码`。
```javascript
methods: {
sendCode() {
// 发送验证码的逻辑
// ...
// 启动倒计时
let seconds = 60;
this.buttonText = `${seconds}秒后重发`;
const interval = setInterval(() => {
seconds--;
if (seconds === 0) {
clearInterval(interval);
this.buttonText = '发送验证码';
} else {
this.buttonText = `${seconds}秒后重发`;
}
}, 1000);
},
},
```
完整代码如下所示:
```html
<template>
<el-input v-model="phone" type="tel" placeholder="请输入手机号">
<el-button slot="append" @click="sendCode">{{ buttonText }}</el-button>
</el-input>
</template>
<script>
export default {
data() {
return {
phone: '',
buttonText: '发送验证码',
};
},
methods: {
sendCode() {
// 发送验证码的逻辑
// ...
// 启动倒计时
let seconds = 60;
this.buttonText = `${seconds}秒后重发`;
const interval = setInterval(() => {
seconds--;
if (seconds === 0) {
clearInterval(interval);
this.buttonText = '发送验证码';
} else {
this.buttonText = `${seconds}秒后重发`;
}
}, 1000);
},
},
};
</script>
```
阅读全文