【问题标题】:How can I customize autocomplete view?如何自定义自动完成视图?
【发布时间】:2018-06-01 18:31:22
【问题描述】:

我的看法是这样的:

<div class="form-group">
    <div class="input-group">
        <input type="text" class="form-control" placeholder="Search" name="q" autofocus v-model="typeahead" @input="input">
        <span class="input-group-btn">
            <button class="btn btn-default" type="submit" ref="submitButton"><span class="fa fa-search"></span></button>
        </span>
        <ul v-if="!selected && typeahead">
            <li v-for="state in filteredStates" @click="select(state)">{{ state }}</li>
        </ul>
    </div>
</div>

我使用 vue.js

演示和完整代码如下: http://jsfiddle.net/oscar11/tm8k8907/20/

如果我输入一个关键字,显示就会像 jsfiddle 中的演示一样整洁

我想在下面的输入类型搜索下自动完成:

我怎样才能让它像谷歌自动完成?

我还是 css 新手

【问题讨论】:

  • 我认为您在谷歌上输入时将vue js autocomplete 拼错为macbook
  • @Nisarg Shah,对不起,我的英语不够好。但基本上我想要我的自动完成视图,就像谷歌自动完成视图一样
  • 我的意思是建议你应该在谷歌上搜索它。有很多库支持这些功能。

标签: css autocomplete vuejs2 bootstrap-4 vue-component


【解决方案1】:

由于您使用的是引导程序,因此如果您希望结果显示在此演示中的搜索下方,您只需创建两行:http://jsfiddle.net/samayo/tm8k8907/22/

new Vue({
    el: '#app',
    data: {
    	selected: null,
    	typeahead: null,
      states: ['Alabama', 'Alaska', 'Arizona', 'Arkansas', 'California',
  'Colorado', 'Connecticut', 'Delaware', 'Florida', 'Georgia', 'Hawaii',
  'New Jersey', 'New Mexico', 'New York', 'North Carolina', 'North Dakota',
  'Ohio', 'Oklahoma', 'Oregon', 'Pennsylvania', 'Rhode Island',
  'Idaho', 'Illinois', 'Indiana', 'Iowa', 'Kansas', 'Kentucky', 'Louisiana',
  'Maine', 'Maryland', 'Massachusetts', 'Michigan', 'Minnesota',
  'Mississippi', 'Missouri', 'Montana', 'Nebraska', 'Nevada', 'New Hampshire',
  'South Carolina', 'South Dakota', 'Tennessee', 'Texas', 'Utah', 'Vermont',
  'Virginia', 'Washington', 'West Virginia', 'Wisconsin', 'Wyoming']
    },
    computed:{
      filteredStates(){
        return this.states.filter(s => s.toLowerCase().includes(this.typeahead.toLowerCase()))
      }
    },
    
    methods: {
    	select: function(state){
      	this.typeahead = state
        this.selected = state
      },
      
      input: function(){
      	this.selected = null
      }
    }
});
<link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet"/>
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.1.6/vue.js"></script>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"/>


<div id="app">
  <div class="row">
    <div class="col-md-6">
      <div class="form-group">
        <div class="input-group">
         <input type="text" class="form-control" placeholder="Search" name="q" autofocus v-model="typeahead" @input="input">
         <span class="input-group-btn">
                <button class="btn btn-default" type="submit" ref="submitButton"><span class="fa fa-search"></span></button>
            </span>
        </div>
      </div>
    </div>
  </div>
  
  <div class="row">
    <div class="col-md-6">
      <ul v-if="!selected && typeahead">
        <li v-for="state in filteredStates" @click="select(state)">{{ state }}</li>
      </ul>
    </div>
  </div>
</div>

【讨论】:

  • 谢谢。这就是我的意思。但仍有不足之处。如何从 ul 中删除项目符号并使悬停像自动完成谷歌一样?所以视图与自动完成 google 相同
  • 如果您想从 ul 中删除项目符号,只需添加此样式:ul {list-style-type: none} 或查看更新的小提琴:jsfiddle.net/samayo/tm8k8907/23 但我不确定您的意思是“与自动完成” .. 类似
  • 谢谢。但仍有不足之处。悬停仍然不整齐。它没有停靠在左侧,因为悬停谷歌自动完成。试试你看看悬停谷歌自动完成位置。有点不一样
  • 谢谢。我想再问一次。有没有其他方法不创建两行?因为如果我将它实现到我的实际项目中,它看起来很蓬乱
  • 是的,也许你可以这样做:jsfiddle.net/samayo/tm8k8907/25 删除行。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-08-10
  • 2019-09-19
  • 1970-01-01
  • 2015-03-31
  • 1970-01-01
  • 2012-01-26
  • 1970-01-01
相关资源
最近更新 更多