javascript - 防止点击 VuetifyJS 组合框后调用软键盘

标签 javascript vue.js progressive-web-apps vuetify.js soft-keyboard

我需要使用 VuetifyJS combobox在移动。一旦组合框字段被点击,它就会调用软键盘。如何防止软键盘的触发? CodePen 示例:https://codepen.io/anon/pen/KxVEea

HTML:

  <v-combobox
  v-model="select
  :items="items"
  label="Select an item"
  ></v-combobox>

JS:

new Vue({
  el: '#app',
  data () {
    return {
      select: 'Programming',
      items: [
        'Programming',
        'Design',
        'Vue',
        'Vuetify'
      ]
    }
  }
})

最佳答案

检查Vuetify Guide: Combobox API ,有一个 prop=type,它设置输入类型(如果打开浏览器检查器,您将看到 Vuetify 如何构造组合框),其默认值为 '文本'。这就是为什么点击它时软键盘会自动弹出的原因。

一个快速解决方案,将其设置为按钮。 (但潜在的风险是用户无法再手动更改该值。特别是您想实现一个可搜索的组合框)

检查下面的演示(或 open the codepen in your mobile ):

编辑:根据 CSS 特异性将输入文本向左对齐(请查看下面演示中的 CSS 部分)。

new Vue({
  el: '#app',
  data() {
    return {
      select: 'Programming',
      items: [
        'Programming',
        'Design',
        'Vue',
        'Vuetify'
      ]
    }
  }
})
.v-menu input[type=button][role=combobox] {
  text-align: left;
}

.v-select__slot > input[type=button][role=combobox] { 
  /*text-align: left;   this one works also, you can open browser inspector, then build your own */
}
<link href="https://fonts.googleapis.com/css?family=Roboto:100,300,400,500,700,900|Material+Icons" rel="stylesheet" />
<link href="https://cdn.jsdelivr.net/npm/<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="295f5c4c5d404f506918071807181d" rel="noreferrer noopener nofollow">[email protected]</a>/dist/vuetify.min.css" rel="stylesheet" />
<script src="https://cdn.jsdelivr.net/npm/babel-polyfill/dist/polyfill.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script src="https://cdn.jsdelivr.net/npm/<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="b5c3c0d0c1dcd3ccf5849b849b8481" rel="noreferrer noopener nofollow">[email protected]</a>/dist/vuetify.min.js"></script>


<div id="app">
  <v-app id="inspire">
    <v-container fluid>
      <v-layout wrap>
        <v-flex xs12>
          <v-combobox v-model="select" :items="items" label="Select a favorite activity or create a new one" type="button"></v-combobox>
        </v-flex>
        <v-flex xs12>
          <v-combobox v-model="select" :items="items" chips label="I use chips" type="button"></v-combobox>
        </v-flex>
        <v-flex xs12>
          <v-combobox v-model="select" :items="items" chips label="I use a scoped slot" type="button">
            <template slot="selection" slot-scope="data">
              <v-chip
                :selected="data.selected"
                :disabled="data.disabled"
                :key="JSON.stringify(data.item)"
                class="v-chip--select-multi "
                @input="data.parent.selectItem(data.item)"
                type="button"
              >
                <v-avatar class="accent white--text">
                  {{ data.item.slice(0, 1).toUpperCase() }}
                </v-avatar>
                {{ data.item }}
              </v-chip>
            </template>
          </v-combobox>
        </v-flex>
        <v-flex xs12>
          <v-combobox v-model="select" chips label="I'm readonly" readonly></v-combobox>
        </v-flex>
      </v-layout>
    </v-container>
  </v-app>
</div>

关于javascript - 防止点击 VuetifyJS 组合框后调用软键盘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52025652/

相关文章:

javascript - 内容安全策略 header 的 *.example.com 是否也与 example.com 匹配?

javascript - 使用 jQuery 将 float div 居中

vue.js - BootstrapVue 模态在第一次点击时不显示,但在第二次点击时工作正常

laravel - VueJS - 数据和方法范围

vue.js - Nuxt : Open component/page as modal with dedicated url like dribble. com

Angular 9 PWA 哈希不匹配(cacheBustedFetchFromNetwork)

Javascript 每次循环问题

javascript - 如何在 PWA(桌面)中获取自定义菜单

javascript - PWA : How to have dynamic "start_url" in manifest. json

javascript - 为什么你必须用匿名函数包装回调?