javascript - Vue JS中数量为零时无法禁用按钮
问题描述
我正在尝试使用 vue 来增加和减少数量选择器组件上的输入值,唯一的问题是当值为零或更低时我想禁用减号按钮,下面是我到目前为止创建的 HTML 和 JS, alert 和 updateButtonDisabled() 函数不起作用。
带有点击功能的 HTML
<div class="input-group-prepend">
<span id="subButton" class="input-group-text" @click="decrement()">-</span>
</div>
<input v-model="form.quantity" type="number" class="form-control" id="Quantity" value="1" min="1" {% if product.variants.size == 1 %}max="{{ product.variants.first.inventory_quantity}}"{% endif %}>
<div class="input-group-append">
<span class="input-group-text" @click="increment()">+</span>
</div>
JS和数据
data(){
return {
form: {
id: document.getElementById('variant-id').value,
quantity: document.getElementById('Quantity').value
}
}
}
updateButtonDisabled(){
// If quanitity less than equal zero disable the minus button
if(this.form.quantity <= 0) {
document.getElementById("subButton").setAttribute('disabled', 'disabled');
}
else {
document.getElementById("subButton").removeAttribute('disabled');
}
},
increment () {
this.form.quantity++
this.updateButtonDisabled();
},
decrement () {
if(this.form.quantity <= 0) {
alert('Negative quantity not allowed')
} else {
this.form.quantity--
}
this.updateButtonDisabled();
}
任何帮助都会很棒-谢谢
解决方案
A对拥有属性<span>
没有反应。disabled
你有两个选择:使用一个 DOM 元素,当disabled
属性存在时,它本机(或在你使用的任何框架中)会改变外观。比如<button>
。
或者,您可以简单地将一个类(怎么样disabled
?)应用于元素并将其样式设置为您的心脏内容:
span.disabled {
opacity: 0.5;
pointer-events: none;
}
还有一点需要注意:不要像那样操作组件中的 DOM。Vue 可以为你做这件事,很简单:
<button :disabled="form.quantity <= 0">
或者,使用一个类:
<span :class="{ disabled: form.quantity <= 0}">
我不会说自己做错了,但这让我想起了一个人在路上推着一辆跑车而不是开车。
最后说明:无需再打电话updateButtonDisabled()
了。这就是使用 Vue 的美妙之处。它是反应性的。
推荐阅读
- java - Vert.x Auth - 缺少权限会产生 500 而不是 403
- java - 用于 n 个特殊字符部分的 Java 字符串拆分/删除
- javascript - 无法将新添加的行排序到 html 表
- python - 计算python中每个目标变量的百分比
- html - 如何在 HTML 中并排显示两个元素?
- r - dplyr中的条件求和
- java - 如何从 AWS 参数存储中获取 spring datasource 属性值?
- python - 使用 selenium 解决验证码
- excel - 如何将任何类型的数据转换为python中的工作簿对象?
- javascript - 如何管理 GraphQL 查询循环?