我想禁用表单提交按钮,直到所有输入字段均已填写并且没有错误。
<button
:disabled="disabled"
type="submit"
value="Submit"
>
Suggest
</button>
let disabled = ref(true);
let error = ref(false);
nextTick(() => {
let inputs = Array.from(document.getElementsByClassName("form__input"));
if (!error.value) {
inputs.forEach((input) => {
if (input.value === "") {
disabled.value = true;
} else {
disabled.value = false;
}
});
}
})
该按钮默认处于禁用状态,但一旦满足已经提到的条件,它就不会自行“启用”。
到目前为止,我正在使用辅助生命周期挂钩 nextTick() ,这显然在这种情况下对我没有帮助。
“禁用”状态将在控制台中更新,但不会在 DOM 上更新。
我该如何解决这个问题?
干杯
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
也许您应该使用
v-model、compulated或@input来监听事件并更改按钮禁用状态。最简单的解决方案是使用
计算值来设置按钮的禁用状态 - 基于输入值 - 如果有任何为空,则按钮被禁用这是一个基本示例
const { ref, createApp, computed } = Vue; createApp({ setup() { const input1 = ref(""); const input2 = ref(""); const input3 = ref(""); // disabled is true if ANY input is empty string const disabled = computed(() => !input1.value || !input2.value || !input3.value); const clicked = () => console.log('clicked'); return { input1, input2, input3, disabled, clicked }; } }).mount('#app');。。。。测试