vue前端按钮变灰和3秒后自动启用的案例

<template>
<div>
<form @submit.prevent="handleSubmit">
<!-- 其他表单字段 -->
<button
:disabled="isSubmitting"
:class="{ 'disabled': isSubmitting }"
type="submit"
>
{{ isSubmitting ? 'Submitting...' : 'Submit' }}
</button>
</form>
</div>
</template>

<script>
export default {
data() {
return {
isSubmitting: false,
};
},
methods: {
async handleSubmit() {
this.isSubmitting = true;
try {
// 模拟异步提交请求
await new Promise((resolve) => setTimeout(resolve, 2000));
alert('Form submitted successfully!');
} catch (error) {
console.error('Form submission failed:', error);
} finally {
this.isSubmitting = false;
}
},
},
};
</script>

<style>
.button-disabled {
background-color: #cccccc;
cursor: not-allowed;
}
</style>

在这个示例中:

  1. 我们通过 isSubmitting 变量来跟踪提交状态。
  2. 在按钮上通过 :disabled="isSubmitting" 控制按钮的禁用状态。
  3. 通过 :class="{ 'disabled': isSubmitting }" 赋予按钮特殊的样式,使其在禁用时变灰。
  4. 在 handleSubmit 方法中,模拟了一个异步提交请求,使用 setTimeout 来延迟 2 秒(你可以将其替换成实际的异步请求),并在请求完成后重置 isSubmitting 变量。

如果加上倒计时变灰后自动启用:

<template>
<div>
<form @submit.prevent="handleSubmit">
<!-- 其他表单字段 -->
<button
:disabled="isSubmitting"
:class="{ 'button-disabled': isSubmitting }"
type="submit"
>
{{ isSubmitting ? `Submitting... (${countdown}s)` : 'Submit' }}
</button>
</form>
</div>
</template>

<script>
export default {
data() {
return {
isSubmitting: false,
countdown: 3, // 初始倒计时时间为3秒
};
},
methods: {
handleSubmit() {
this.isSubmitting = true;
this.startCountdown();

// 模拟异步提交请求
setTimeout(() => {
alert('Form submitted successfully!');
}, 2000);
},
startCountdown() {
const interval = setInterval(() => {
if (this.countdown > 0) {
this.countdown--;
} else {
clearInterval(interval);
this.isSubmitting = false;
this.countdown = 3; // 重置倒计时
}
}, 1000);
},
},
};
</script>

<style>
.button-disabled {
background-color: #cccccc;
cursor: not-allowed;
}
</style>

在这个示例中:

  1. 增加了一个 countdown 变量来表示倒计时的秒数。
  2. 在按钮的文本中显示倒计时 {{ isSubmitting ? \Submitting… (${countdown}s)` : ‘Submit’ }}`。
  3. 当用户点击提交按钮时,先设置 isSubmitting 为 true,然后调用 startCountdown 方法。
  4. startCountdown 方法使用 setInterval 每秒递减 countdown,并在倒计时结束后重新启用按钮和重置倒计时时间。

这样,当用户点击提交按钮时,按钮将显示倒计时,并在 3 秒后自动重新启用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

seeyouwell

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值