vue.js desactivar la entrada condicionalmente


Tengo una entrada

<input type="text" id="name" class="form-control" name="name"  v-model="form.name" :disabled="validated ? '' : disabled">

Y en mi SDV.componente js, tengo,

..
..
ready() {
        this.form.name = this.store.name;
        this.form.validated = this.store.validated;
    },
..

validated siendo boolean viene 0 o 1, pero no importa cuál sea el valor almacenado en la base de datos, mi entrada siempre está desactivada

Necesito que la entrada se deshabilite si es falsa, de lo contrario, editable

Actualización:

Haciendo esto siempre habilita la entrada (no importa que tenga 0 o 1 en la base de datos)

<input type="text" id="name" class="form-control" name="name"  v-model="form.name" :disabled="validated ? '' : disabled">

Haciendo esto siempre deshabilitado la entrada (no importa que tenga 0 o 1 en base de datos)

<input type="text" id="name" class="form-control" name="name"  v-model="form.name" :disabled="validated ? disabled : ''">
Author: Zaffar Saffee, 2016-06-28

7 answers

Para eliminar la prop deshabilitada, debe establecer su valor en false. Este debe ser el valor booleano para false, no la cadena 'false'.

Entonces, si el valor para validated es un 1 o un 0, entonces condicionalmente establece el prop disabled basado en ese valor. Por ejemplo:

<input type="text" :disabled="validated == 1">

He aquí un ejemplo .

 230
Author: asemahle,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-07-27 18:44:19

Podría tener una propiedad calculada que devuelve un booleano dependiente de cualquier criterio que necesite.

<input type="text" :disabled=isDisabled>

Luego coloque su lógica en una propiedad computada...

computed: {
  isDisabled() {
    // evaluate whatever you need to determine disabled here...
    return this.form.validated;
  }
}
 29
Author: David Morrow,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-06-07 22:18:22

No es difícil, compruebe esto.

<button @click="disabled = !disabled">Toggle Enable</button>
<input type="text" id="name" class="form-control" name="name"  v-model="form.name" :disabled="disabled">

Jsfiddle

 15
Author: Sebastiao Marcos,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-12-24 12:54:20

Su atributo disabled requiere un valor booleano:

<input :disabled="validated" />

Observe cómo solo he comprobado si validated - Esto debería funcionar como 0 is falsey ...por ejemplo,

0 is considered to be false in JS (like undefined or null)

1 is in fact considered to be true

Para ser extra cuidadoso intente: <input :disabled="!!validated" />

Esta doble negación se convierte el falsey o truthy valor de 0 o 1 a false o true

¿No me crees? entra en tu consola y escribe !!0 o !!1 :-)

También, para asegurarse de que su número 1 o 0 son definitivamente viene como un Número y no la Cadena '1' o '0' anteponer el valor que está comprobando con un + e. g {[19] } esto convierte una cadena de un número en un Número e.g

+1 = 1 +'1' = 1 Como David Morrow dijo anteriormente, podría poner su lógica condicional en un método, esto le da más código legible, simplemente devuelva del método la condición que desea verificar.

 6
Author: Francis Leigh,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-12-28 16:48:59

Puede manipular el atributo :disable en vue.js .

Aceptará un booleano, si es verdadero, entonces la entrada se deshabilita, de lo contrario se habilitará...

Algo como estructurado como a continuación en su caso por ejemplo:

<input type="text" id="name" class="form-control" name="name" v-model="form.name" :disabled="validated ? false : true">

También lea esto a continuación:

Deshabilitar Condicionalmente los elementos de entrada a través de JavaScript Expression

Puede deshabilitar condicionalmente los elementos de entrada en línea con una expresión JavaScript. Este enfoque compacto proporciona una rápida manera de aplicar lógica condicional simple. Por ejemplo, si solo necesita para verificar la longitud de la contraseña, puede considerar hacer algo así.
<h3>Change Your Password</h3>
<div class="form-group">
  <label for="newPassword">Please choose a new password</label>
  <input type="password" class="form-control" id="newPassword" placeholder="Password" v-model="newPassword">
</div>

<div class="form-group">
  <label for="confirmPassword">Please confirm your new password</label>
  <input type="password" class="form-control" id="confirmPassword" placeholder="Password" v-model="confirmPassword" v-bind:disabled="newPassword.length === 0 ? true : false">
</div>
 2
Author: Alireza,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-02-18 10:13:00

Puede crear una propiedad calculada y habilitar/deshabilitar cualquier tipo de formulario de acuerdo con su valor.

<template>
    <button class="btn btn-default" :disabled="clickable">Click me</button>
</template>
<script>
     export default{
          computed: {
              clickable() {
                  // if something
                  return true;
              }
     }
</script>
 2
Author: Yamen Ashraf,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-08-08 14:12:20

Puede usar esta condición add.

  <el-form-item :label="Amount ($)" style="width:100%"  >
            <template slot-scope="scoped">
            <el-input-number v-model="listQuery.refAmount" :disabled="(rowData.status !== 1 ) === true" ></el-input-number>
            </template>
          </el-form-item>
 1
Author: anson,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-06-13 03:22:43