【问题标题】:Close form multi select on button click vuejs关闭表单多选按钮单击vuejs
【发布时间】:2021-05-14 23:58:41
【问题描述】:

我有 html 设计的 vue 材质多选,我希望在单击按钮时关闭多选选项。

这是我的设计

我试过了:

methods: {
    selectAgents() {
        this.$refs.selectAgent.$el.children[0].click();
        this.$refs.selectAgent.$el.children[0].focus();
        this.$refs.selectAgent.$el.children[0].blur();
    }
}

这些都不行。

<md-field>
    <label for="agents">Select user</label>
    <md-select v-model="selectedAgents" name="agents" id="agents" ref="selectAgent" multiple>
        <div class="add-user-outer">
            <div class="add-user-searchbox d-flex align-center">
                <md-icon class="brand-primary search">search</md-icon>
                <md-field md-inline>
                    <label>Search By Name</label>
                    <md-input v-model="agentSearchQuery"></md-input>
                </md-field>
                <md-button :md-ripple="false" class="md-primary" @click="selectAgents">
                    <md-icon>add</md-icon>
                    Add User
                </md-button>
            </div>
        </div>

        <md-option v-for="agent in resultAgents" :key="agent.id" :value="agent.id" class="share-dropdown">
            <md-avatar class="mr-2">
                <div v-if="!agent.image" class="md-avatar position-absolute md-intial">
                {{ agent.first_name.substring(0, 1).toUpperCase()
                }}{{ agent.last_name.substring(0, 1).toUpperCase() }}
                </div>
                <img v-else :src="`/images/users/`+agent.image" alt="Avatar" class="avatar-sidebar"/>
            </md-avatar>
            <div class="text-content">
                <h4 class="text-primary">{{agent.first_name}} {{agent.last_name}}</h4>
                <p class="description-normal text-description text-left font-weight-regular">
                    {{agent.email}}
                </p>
            </div>
        </md-option>
    </md-select>
</md-field>

有人用 angular 创建了一个相同的 jsfiddle,我也尝试过,但不能使用我的 vuejs。

https://jsfiddle.net/eo4th092/23/

【问题讨论】:

    标签: javascript vue.js vue-material


    【解决方案1】:

    可以通过访问 $ref.deactivate() 来实现, 添加到html多选标签:

    ref="multiselect"
    

    并在你的方法中调用它:

    this.$refs.multiselect.deactivate()
    

    也可以打开/切换

    有关此 PR 的完整详细信息read here

    【讨论】:

      【解决方案2】:
      选择用户 搜索 按名称搜索 添加 添加用户
          <md-option v-for="agent in resultAgents" :key="agent.id" :value="agent.id" class="share-dropdown">
              <md-avatar class="mr-2">
                  <div v-if="!agent.image" class="md-avatar position-absolute md-intial">
                  {{ agent.first_name.substring(0, 1).toUpperCase()
                  }}{{ agent.last_name.substring(0, 1).toUpperCase() }}
                  </div>
                  <img v-else :src="`/images/users/`+agent.image" alt="Avatar" class="avatar-sidebar"/>
              </md-avatar>
              <div class="text-content">
                  <h4 class="text-primary">{{agent.first_name}} {{agent.last_name}}</h4>
                  <p class="description-normal text-description text-left font-weight-regular">
                      {{agent.email}}
                  </p>
              </div>
          </md-option>
      </md-select>
      

      【讨论】:

      • 你能解释一下你的答案吗?也许指出您在代码中所做的更改
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-02
      • 2016-03-08
      • 2012-01-16
      • 2014-02-27
      • 1970-01-01
      相关资源
      最近更新 更多