自动填充输入字段

Posted

技术标签:

【中文标题】自动填充输入字段【英文标题】:Autofill input fields 【发布时间】:2021-11-10 06:17:24 【问题描述】:

我需要关注才能工作。我有一个输入字段(在我的代码number1,我需要自动填充不是自动完成其他输入字段 (在我的代码中autofill1 + autofill2.

我正在使用 Bootstrap Vue(Bootstrap 4.6 和 Vue.js 2)。

这是我的代码:

<template>
  <div class="m-2 mt-3">
    <table class="table table-striped mt-2">
      <tbody>
        <h5 class="ml-1">Informations</h5>
        <tr>
          <div class="row">
            <div class="col-md-6 m-1">
              <div class="mt-2">number1</div>
              <b-form-input class="form-control" placeholder="1234567" id="number1" />
            </div>
          </div>
          <div class="row">
            <div class="col-md-5 ml-1 mr-1">
              <div class="mt-2">autofill1</div>
              <b-form-select id="autofill1"> </b-form-select>
            </div>

            <div class="col-md-5 ml-1 mr-1">
              <div class="mt-2">autofill2</div>
              <b-form-select id="autofill2"> </b-form-select>
            </div>
            <div class="row">
            <div class="col-md-3 mt-2 ml-1">
              <b-button variant="success" type="submit"><b-icon icon="check-circle-fill"></b-icon> Save Changes</b-button>
            </div>
            </div>
          </div>
        </tr>
      </tbody>
    </table>
  </div>
</template>

<script>
  export default 
  ;
</script>

<style scoped>
</style>

所以我的目标是将一些数据 (首先猜测是一个 json 文件) 加载到我的脚本中,然后在我写一个匹配的数字 (也可能是一个文本) 在输入字段number1 中,其他两个字段将被自动填充。

提前感谢您帮助我!

结构json数据:

[
   "number": 1234567, "autofill1": "Hello", "autofill2": "Goodbye" ,
   "number": 9876543, "autofill1": "Ciao", "autofill2": "Arrivederci" ,
   "number": 1346795, "autofill1": "Hallo", "autofill2": "Tschuess" 
]

【问题讨论】:

目前还不清楚你想帮什么忙。你能举例说明它应该如何工作吗? 我添加了一张图片来展示它应该如何工作 - 希望它会有所帮助! 很好的插图!您能展示一下 json 文件中的数据是如何构成的吗? 也添加了! 【参考方案1】:

这样的事情会起作用:Example

<template>
  <div>
    <input type="number" placeholder="1234567" v-model.number="number1" />
    <input type="text" :value="getAutofill.autofill1" />
    <input type="text" :value="getAutofill.autofill2" />
  </div>
</template>

<script>
export default 
    computed: 
      getAutofill()
        if (!this.data.find(item => item.number == this.number1)) return ["",""]
        return this.data.find(item => item.number == this.number1)
      
    ,
    data() 
      return 
        number1: undefined,
        data: [
           "number": 1234567, "autofill1": "Hello", "autofill2": "Goodbye" ,
           "number": 9876543, "autofill1": "Ciao", "autofill2": "Arrivederci" ,
           "number": 1346795, "autofill1": "Hallo", "autofill2": "Tschuess" 
        ]
      
    
;
</script>

【讨论】:

【参考方案2】:

你需要在数据中添加一些东西,然后观察变量 number1 的变化......

<template>
    <div class="m-2 mt-3">
      <table class="table table-striped mt-2">
        <tbody>
          <h5 class="ml-1">Informations</h5>
          <tr>
            <div class="row">
              <div class="col-md-6 m-1">
                <div class="mt-2">number1</div>
                <b-form-input class="form-control" placeholder="1234567" id="number1" v-model="number1" />
              </div>
            </div>
            <div class="row">
              <div class="col-md-5 ml-1 mr-1">
                <div class="mt-2">autofill1</div>
                <b-form-input class="form-control" id="autofill1" v-model="autofill1" />
              </div>
  
              <div class="col-md-5 ml-1 mr-1">
                <div class="mt-2">autofill2</div>
                <b-form-input class="form-control" id="autofill2" v-model="autofill2" />
              </div>
              <div class="row">
              <div class="col-md-3 mt-2 ml-1">
                <b-button variant="success" type="submit"><b-icon icon="check-circle-fill"></b-icon> Save Changes</b-button>
              </div>
              </div>
            </div>
          </tr>
        </tbody>
      </table>
    </div>
  </template>
  
  <script>
    export default 
        data()
            return 
                number1: "",
                autofill1: "",
                autofill2: "",
                jsonDATA: ...
            
        ,
        methods: 
            findData(key) 
                for(let i=0; i < this.jsonDATA.length; i++)
                    if(this.jsonDATA[i]['number'] === key) return element[i]
                
                // add somthing when no data in array...
            
        ,
        watch: 
            number1()
                try 
                    let tmp = this.findData(this.number1)
                    this.autofill1 = tmp['autofill1']
                    this.autofill2 = tmp['autofill2']
                
            
        
    ;
  </script>
  
  <style scoped>
  </style>

我还没有测试过,但这应该可以工作...这不完整,您需要添加一些行为,当没有找到数据时要做什么...

【讨论】:

以上是关于自动填充输入字段的主要内容,如果未能解决你的问题,请参考以下文章

密码输入字段长度 = 0 自动填充(android chrome)

禁用输入字段自动填充(纯 JS)

如何禁用特定输入字段的自动填充

如果表单有超过 200 个输入字段,则自动填充/自动完成不起作用

更改自动填充输入字段的字体颜色

在 JQuery 自动完成填充输入字段后调用新函数