【问题标题】:Disable a button after one click in Vue.js在 Vue.js 中单击后禁用按钮
【发布时间】:2019-01-14 13:10:35
【问题描述】:

我正在使用 Vue.js 构建一个新的应用程序,并且遇到了我认为是一个简单的问题,但还没有找到解决方案。

我有一个包含三个答案的问题。我只希望用户能够单击一次我知道可以使用的答案 @click.once 但我需要让用户知道它在 UI 中不再可点击。我尝试过类似<button :disabled="submitted" @click="checkAnswer('q1','3'), submitted = true"></button> 的方法,但这会同时禁用所有三个按钮。有人可以告诉我如何在用户单击按钮后禁用按钮并使其独立于其他按钮吗?非常感谢任何帮助。

HTML:

<ul>
    <li><button class="btn blue" @click="checkAnswer('q1','1')">Answer 1 for q1</button></li>
    <li><button class="btn blue" @click="checkAnswer('q1','2')">Answer 2 for q1</button></li>
    <li><button class="btn blue" @click="checkAnswer('q1','3')">Answer 2 for q1</button></li>
</ul>

代码:

export default {
name: 'Questions',
props: ['clue'],
data(){
    return {
        feedback: null,
        answer: null,
        answers: {
            q1: '2',
            q2: '1',
            q3: '3'
        }
    }
},
 methods: {
    checkAnswer(q, a) {
        if(a == this.answers[q]){
            this.answer = "Congrats!"
        } else {
            this.answer = "Sorry that was the wrong answer."
        }
    }
}
}

【问题讨论】:

  • 每个按钮都需要一个单独的状态变量。

标签: javascript vue.js vuejs2 vue-component


【解决方案1】:

$event 作为第三个参数传递,然后在处理程序中传递event.target.disabled = true

这确实是一种快速而肮脏的方法,只要这是按钮的尽头,就可以了。更健壮的方法是为每个按钮制作一个组件,并为它是否被禁用有一个状态变量。

【讨论】:

  • OP 想要禁用其他两个按钮。
  • @ChrisG “有人可以告诉我如何在用户点击按钮后禁用它”。他们似乎不想禁用其他两个按钮。
  • 谢谢@Roy 成功了!我知道它必须很简单。我不能再接受你的回答 7 分钟,但我会的
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-20
  • 2014-01-03
  • 2014-06-29
相关资源
最近更新 更多