Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

233
Views
opción deshabilitada agregada al nodo que no funciona con vuetify

Hola, estoy usando vuetify y creé esa directiva para poder deshabilitar todos los elementos secundarios del padre que tiene el atributo "disableAll". Funciona perfectamente con algunos elementos (como el texto de entrada normal), pero cuando es un tipo de casilla de verificación ( como un interruptor) no se deshabilitan ... ¿podría ser vuetify la razón de eso? Imprimí la constante de "Nodos" y dentro de eso está la casilla de verificación. Entonces está encontrando los elementos y aplica la propiedad deshabilitada pero simplemente no funciona

esta es la directiva

 directives: { disableAll: { componentUpdated: (el) => { const tags = ['input', 'button', 'textarea', 'select']; tags.forEach(tagName => { const nodes = el.getElementsByTagName(tagName); for (let i = 0; i < nodes.length; i++) { nodes[i].disabled = true; nodes[i].tabIndex = -1; } }); } },

este es el html de un Switch

 <div class="col"> <div class="v-input my-0 v-input--is-label-active v-input--is-dirty theme--light v-input--selection-controls v-input--switch primary--text"> <div class="v-input__control"> <div class="v-input__slot"> <div class="v-input--selection-controls__input"> <input aria-checked="true" id="input-414" role="switch" type="checkbox" aria-disabled="false" value="true" disabled tabindex="-1"> <div class="v-input--selection-controls__ripple primary--text"></div> <div class="v-input--switch__track theme--light primary--text"></div> <div class="v-input--switch__thumb theme--light primary--text"> <!----> </div> </div> <label for="input-414" class="v-label theme--light" style="left: 0px; right: auto; position: relative;">Habilitar cartas</label> </div> <div class="v-messages theme--light primary--text"> <div class="v-messages__wrapper"></div> </div> </div> </div> </div>

y como se puede ver en esta linea

 <input aria-checked="true" id="input-414" role="switch" type="checkbox" aria-disabled="false" value="true" disabled tabindex="-1">

La propiedad deshabilitada se está aplicando, simplemente no funciona

Sé que vuetify tiene su propia propiedad deshabilitada que puede agregar a cada nodo, o esta propiedad deshabilitada que se usa en los formularios. Pero estaba tratando de personalizar esto usando directivas porque hay algunos elementos que no necesito tener deshabilitados.

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

Si solo desea activar el efecto de interfaz de usuario para v-switch , no cambie el estado del componente, simplemente puede agregar className= v-input--is-disabled en su Dom de v-switch como se muestra a continuación:

 Vue.directive('disable-all', { inserted: function (el) { el.querySelectorAll('div.v-input.v-input--switch').forEach(item => { item && item.classList.add('v-input--is-disabled') }) } }) new Vue({ el: '#app', vuetify: new Vuetify(), data () { return { switches: [true, false], } }, })
 <script src="https://cdn.jsdelivr.net/npm/babel-polyfill/dist/polyfill.min.js"> </script> <script src="https://cdn.jsdelivr.net/npm/vue@2.x/dist/vue.js"></script> <script src="https://cdn.jsdelivr.net/npm/vuetify@2.6.1/dist/vuetify.min.js"></script> <link href="https://fonts.googleapis.com/css?family=Roboto:100,300,400,500,700,900" rel="stylesheet" type="text/css"> <link href="https://cdn.jsdelivr.net/npm/@mdi/font@6.x/css/materialdesignicons.min.css" rel="stylesheet" type="text/css"> <link href="https://fonts.googleapis.com/css?family=Material+Icons" rel="stylesheet" type="text/css"> <link href="https://cdn.jsdelivr.net/npm/vuetify@2.6.1/dist/vuetify.min.css" rel="stylesheet" type="text/css"> <div id="app"> <v-app id="inspire"> <v-container class="px-0" fluid v-disable-all > <v-switch v-model="switches[0]" :label="`Switch 1: ${switches[0].toString()}`" ></v-switch> <v-switch v-model="switches[1]" :label="`Switch 1: ${switches[1].toString()}`" ></v-switch> </v-container> </v-app> </div>

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!