• Empleos
  • Sobre nosotros
  • profesionales
    • Inicio
    • Empleos
    • Cursos y retos
  • empresas
    • Inicio
    • Publicar vacante
    • Nuestro proceso
    • Precios
    • Evaluaciones
    • Nómina
    • Blog
    • Comercial
    • Calculadora de salario

0

351
Vistas
API de composición de Vue 3: deshabilitar el botón de envío del formulario hasta que se cumplan todas las condiciones

Quiero deshabilitar el botón de envío de mi formulario hasta que se completen todos los campos de entrada y no haya errores.

 <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; } }); } })

El botón está deshabilitado de forma predeterminada, pero no se 'habilitará' solo una vez que se cumplan las condiciones ya mencionadas.

Hasta ahora, estoy usando un gancho auxiliar de ciclo de vida nextTick() que claramente no me ayuda en esta situación.

El estado 'deshabilitado' se actualizará en la consola pero no en el DOM.

¿Cómo puedo abordar esto?

Salud

about 3 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

La solución más fácil es usar un valor computed para establecer el estado deshabilitado del botón, en función de los valores de entrada, si alguno está vacío, el botón está deshabilitado.

Aquí hay un ejemplo básico

 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');
 <script src="https://unpkg.com/vue@3.2.37/dist/vue.global.prod.js"></script> <div id="app"> Input 1: <input v-model="input1" type="text"/><br/> Input 2: <input v-model="input2" type="text"/><br/> Input 3: <input v-model="input3" type="text"/><br/> <button :disabled="disabled" @click="clicked">Click me</button> </div>

about 3 years ago · Juan Pablo Isaza Denunciar

0

tal vez debería usar v-model , computed o @input para escuchar el evento y cambiar el estado de desactivación del botón.

about 3 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Nuestro proceso Comercial
Legal
Términos y condiciones Política de privacidad
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recomiéndame algunas ofertas
Necesito ayuda