【问题标题】:Vue change color of input field when clicked delete button单击删除按钮时Vue改变输入字段的颜色
【发布时间】:2020-12-02 11:34:09
【问题描述】:

我真的是 vue js 的新手,当用户单击 trash-fill button 时,我正在尝试更改输入字段的颜色。目前,当我在输入字段上上传一个字符时,它会将颜色更改为绿色。

当用户点击<b-icon icon="trash-fill" font-scale="1.5" @click="deleteRfidBeforeReload($event, index, 10)"></b-icon> 时,有没有办法将输入字段颜色从绿色更改为白色?

查看

<div id="app">
  <div v-for="(listings, index) in list10" :key="index">
   <b-row>
     <b-col sm="6">
       <b-form-input id="input-live" :value="listings.first_name" disabled></b-form-input>
     </b-col>
     <b-col sm="4">
       <b-form-input v-model="listings.rfidState1" ref="todos" v-on:input="posttorfidapi($event, 10, index)" 
:style="listings.rfidState1 ? { 'background-color': '#33FF90', color:'#33FF90' } : null"></b-form-input>
     </b-col>
      <b-col sm="2">
        <b-icon icon="trash-fill" font-scale="1.5" @click="deleteRfidBeforeReload($event, index, 10)"></b-icon>
      </b-col>
    </b-row>
  </div>
</div>

脚本

new Vue({
  el: "#app",
  data: {
    list10: [
      { first_name: "mission1", id: "1", rfidState1:""},
      { first_name: "mission2", id: "2", rfidState1:""},
      { first_name: "mission3", id: "3", rfidState1:""},
      { first_name: "mission4", id: "4", rfidState1:""}
    ]
  },
  methods: {
    posttorfidapi(event, col, index){
        if(event.length > 3){
        console.log("CHANGE INPUT FIELD COLOR TO GREEN");
      }
    },
    deleteRfidBeforeReload($event, index, col){
        console.log(index);
      console.log("CHANGE THE PARTICULAR INPUT FIELD TO WHITE AGAIN");
    }
  }
})

我在 JSFIDDLE 上的代码

https://jsfiddle.net/ujjumaki/7qsnvftm/17/

【问题讨论】:

    标签: javascript vue.js bootstrap-vue


    【解决方案1】:

    我看到您正在使用三元运算符。您可以在数组中的对象中引入一个新属性,我们将切换truefalse,例如whiteBackground,在单击按钮时将其切换为true,在输入时切换回false更改(我假设这是您想要的)。然后,您可以将其作为另一个三元运算符嵌套到您已经存在的运算符中。所以我建议如下:

      list10: [
        {
          first_name: "mission1",
          id: "1",
          rfidState1: "",
          whiteBackground: false
        },
        //...
      ]
    

    方法:

    posttorfidapi(event, col, index) {
        this.list10[index].whiteBackground = false;
        console.log("CHANGE INPUT FIELD COLOR TO GREEN");
      }
    },
    deleteRfidBeforeReload($event, index, col) {
      this.list10[index].whiteBackground = true;
      console.log("CHANGE THE PARTICULAR INPUT FIELD TO WHITE AGAIN");
    }
    

    还有三元条件:

    :style="listings.rfidState1 ? listings.whiteBackground ? '' : 
       { 'background-color': '#33FF90', color:'#33FF90' }  : ''"
    

    CODESANDBOX

    顺便说一句,你的小提琴不起作用......

    【讨论】:

    • 该逻辑修复了它。谢谢。我的小提琴不起作用,因为导入了 bootstrap vue,但我不知道如何在 JSFIDDLE 上调用它。
    • 好的,很高兴我能帮上忙!嗯,好的是小提琴存在,所以如果需要我们可以看到所有的代码:)
    猜你喜欢
    • 1970-01-01
    • 2014-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-06
    相关资源
    最近更新 更多