纷享销客开发者手册 纷享销客开发者手册
  • APL开发手册
  • PWC开发手册
  • OpenAPI 文档
  • 自定义组件(PC端)
  • 自定义组件(小程序)
  • 自定义插件(PC端)
  • 自定义插件(小程序)
  • 第三方集成插件(H5)
  • API(PC端)
  • API(小程序)
  • Fx DevTools
更新日志
  • 简体中文
  • English
  • 自定义组件(PC端)
  • 自定义组件(小程序)
  • 自定义插件(PC端)
  • 自定义插件(小程序)
  • 第三方集成插件(H5)
  • API(PC端)
  • API(小程序)
  • Fx DevTools
更新日志
  • 简体中文
  • English
  • 入门

  • 组件

    • 组件总览
    • UI组件

      • 按钮
      • 单选框
      • 多选框
      • 输入框
        • 计数器
        • 选择器
        • 级联选择器
        • 开关
        • 时间选择器
        • 日期选择器
        • 日期时间选择器
        • 上传
        • 颜色选择器
        • 表格
        • 标签
        • 进度条
        • 树形控件
        • 分页
        • 标记
        • 警告
        • 消息提示
        • 弹框
        • 通知
        • 下拉菜单
        • 步骤条
        • 对话框
        • 卡片
        • 日历
        • 文字提示
        • 弹出框
        • 折叠面板
        • 走马灯
      • 业务组件

    • 示例

    • 常见问题

    目录

    输入框

    # FxInput 输入框

    移动端与PC端交互方式不同,故参数变动较多,移动端请直接参考底部移动端使用方式

    通过鼠标或键盘输入字符

    :::warning Input 为受控组件,它总会显示 Vue 绑定值。

    通常情况下,应当处理 input 事件,并更新组件的绑定值(或使用v-model)。否则,输入框内显示的值将不会改变。

    不支持 v-model 修饰符。 :::

    # 基础用法

    小数位数decimalPlaces默认是2。

    22 %123.00 $123
    
    <fx-row style="margin-bottom:10px;">
      <fx-col :span="8">
        <label class="label">text: </label>
        <fx-input v-model="input" placeholder="请输入内容" maxlength="10" @change="onChange"></fx-input>
      </fx-col>
      <fx-col :span="8">
        <label class="label">number: </label>
        <fx-input v-model="input_number" type="number" placeholder="请输入内容" @change="onChange"></fx-input>{{input_number}}
      </fx-col>
      <fx-col :span="8">
        <label class="label">percent: </label>
        <fx-input v-model="percent" type="percent" :decimal-places="4" placeholder="percent">
          <span class="el-input__icon" slot="suffix">%</span>
        </fx-input>{{percent}}
      </fx-col>
    </fx-row>
    <fx-row style="margin-bottom:10px;">
      <fx-col :span="12">
        <label class="label">currency: </label>
        <fx-input v-model="currency" type="currency" placeholder="currency">
          <span class="el-input__icon" slot="suffix">$</span>
        </fx-input>{{currency}}
      </fx-col>
    </fx-row>
    
    
    <script>
    export default {
      data() {
        return {
          input: '',
          input_number:22,
          currency:123.0,
          percent:'123.00',
        }
      },
      methods:{
        onChange(val){
          console.log('onChange...',val)
        }
      }
    }
    </script>
    
    显示代码 复制代码 复制代码

    # 输入值以tag方式显示

      
    <fx-input
      placeholder="请输入内容"
      v-model="tagInput"
      :collapse-tags="true"
      @change="onChange"
      width="240px"
      >
    </fx-input>
    &nbsp;&nbsp;
    <!-- <fx-input
      placeholder="请输入内容"
      v-model="tagInput"
      :collapse-tags="true"
      @change="onChange"
      width="240px"
      size="medium"
      >
    </fx-input>&nbsp;&nbsp;
    <fx-input
      placeholder="请输入内容"
      v-model="tagInput"
      :collapse-tags="true"
      @change="onChange"
      width="240px"
      size="small"
      >
    </fx-input> -->
     
    <script>
    export default {
      data() {
        return {
          tagInput:[]
        }
      },
      methods: {
        onChange(val){
          console.log('onChange...',val,this.tagInput)
        }
      }
    }
    </script>
    
    显示代码 复制代码 复制代码

    # 禁用状态

    通过 disabled 属性指定是否禁用 input 组件

    <fx-input
      placeholder="请输入内容"
      v-model="input"
      :disabled="true">
    </fx-input>
    
    <script>
    export default {
      data() {
        return {
          input: ''
        }
      }
    }
    </script>
    
    显示代码 复制代码 复制代码

    # 可清空

    使用clearable属性即可得到一个可清空的输入框

    <fx-input
      placeholder="请输入内容"
      v-model="input"
      clearable>
    </fx-input>
    
    <script>
      export default {
        data() {
          return {
            input: ''
          }
        }
      }
    </script>
    
    显示代码 复制代码 复制代码

    # 密码框

    使用show-password属性即可得到一个可切换显示隐藏的密码框

    <fx-input placeholder="请输入密码" v-model="input" show-password></fx-input>
    
    <script>
      export default {
        data() {
          return {
            input: ''
          }
        }
      }
    </script>
    
    显示代码 复制代码 复制代码

    # 带 icon 的输入框

    带有图标标记输入类型

    属性方式:
    slot 方式:

    可以通过 prefix-icon 和 suffix-icon 属性在 input 组件首部和尾部增加显示图标,也可以通过 slot 来放置图标。

    <div class="demo-input-suffix">
      属性方式:
      <fx-input
        placeholder="请选择日期"
        suffix-icon="el-icon-date"
        v-model="input1">
      </fx-input>
      <fx-input
        placeholder="请输入内容"
        prefix-icon="el-icon-search"
        v-model="input2">
      </fx-input>
    </div>
    <div class="demo-input-suffix">
      slot 方式:
      <fx-input
        placeholder="请选择日期"
        v-model="input3">
        <i slot="suffix" class="el-input__icon el-icon-date"></i>
      </fx-input>
      <fx-input
        placeholder="请输入内容"
        v-model="input4">
        <i slot="prefix" class="el-input__icon el-icon-search"></i>
      </fx-input>
    </div>
    
    <script>
    export default {
      data() {
        return {
          input1: '',
          input2: '',
          input3: '',
          input4: ''
        }
      }
    }
    </script>
    
    显示代码 复制代码 复制代码

    # 文本域

    用于输入多行文本信息,通过将 type 属性的值指定为 textarea。

    文本域高度可通过 rows 属性控制

    <fx-input
      type="textarea"
      :rows="2"
      placeholder="请输入内容"
      v-model="textarea">
    </fx-input>
    
    <script>
    export default {
      data() {
        return {
          textarea: ''
        }
      }
    }
    </script>
    
    显示代码 复制代码 复制代码

    # 可自适应文本高度的文本域

    通过设置 autosize 属性可以使得文本域的高度能够根据文本内容自动进行调整,并且 autosize 还可以设定为一个对象,指定最小行数和最大行数。

    <fx-input
      type="textarea"
      autosize
      placeholder="请输入内容"
      v-model="textarea1">
    </fx-input>
    <div style="margin: 20px 0;"></div>
    <fx-input
      type="textarea"
      :autosize="{ minRows: 2, maxRows: 4}"
      placeholder="请输入内容"
      v-model="textarea2">
    </fx-input>
    
    <script>
    export default {
      data() {
        return {
          textarea1: '',
          textarea2: ''
        }
      }
    }
    </script>
    
    显示代码 复制代码 复制代码

    # 复合型输入框

    可前置或后置元素,一般为标签或按钮

    可通过 slot 来指定在 input 中前置或者后置内容。

    <div>
      <fx-input placeholder="请输入内容" v-model="input1">
        <template slot="prepend">Http://</template>
      </fx-input>
    </div>
    <div style="margin-top: 15px;">
      <fx-input placeholder="请输入内容" v-model="input2">
        <template slot="append">.com</template>
      </fx-input>
    </div>
    <div style="margin-top: 15px;">
      <fx-input placeholder="请输入内容" v-model="input3" class="input-with-select">
        <fx-select v-model="select" :options="options" slot="prepend" placeholder="请选择"></fx-select>
        <fx-button slot="append" icon="el-icon-search"></fx-button>
      </fx-input>
    </div>
    <style>
      .el-select .el-input {
        width: 130px;
      }
      .input-with-select .el-input-group__prepend {
        background-color: #fff;
      }
    </style>
    <script>
    export default {
      data() {
        return {
          input1: '',
          input2: '',
          input3: '',
          select: '',
          options: [{
            value: 'Beijing',
            label: '北京',
          },
          {
            value: 'Shanghai',
            label: '上海',
            disabled: true,
          },
          {
            value: 'Nanjing',
            label: '南京',
          }]
        }
      }
    }
    </script>
    
    显示代码 复制代码 复制代码

    # 尺寸

    可通过 size 属性指定输入框的尺寸,除了默认的大小外,还提供了 large、small 和 mini 三种尺寸。

    <div class="demo-input-size">
      <fx-input
        placeholder="请输入内容"
        suffix-icon="el-icon-date"
        v-model="input1">
      </fx-input>
      <fx-input
        size="medium"
        placeholder="请输入内容"
        suffix-icon="el-icon-date"
        v-model="input2">
      </fx-input>
      <fx-input
        size="small"
        placeholder="请输入内容"
        suffix-icon="el-icon-date"
        v-model="input3">
      </fx-input>
      <fx-input
        size="mini"
        placeholder="请输入内容"
        suffix-icon="el-icon-date"
        v-model="input4">
      </fx-input>
    </div>
    
    <script>
    export default {
      data() {
        return {
          input1: '',
          input2: '',
          input3: '',
          input4: ''
        }
      }
    }
    </script>
    
    显示代码 复制代码 复制代码

    # 带输入建议

    根据输入内容提供对应的输入建议

    激活即列出输入建议
    输入后匹配输入建议

    autocomplete 是一个可带输入建议的输入框组件,fetch-suggestions 是一个返回输入建议的方法属性,如 querySearch(queryString, cb),在该方法中您可以在您的输入建议数据准备好时通过 cb(data) 返回到 autocomplete 组件中。

    <fx-row class="demo-autocomplete">
      <fx-col :span="12">
        <div class="sub-title">激活即列出输入建议</div>
        <fx-autocomplete
          class="inline-input"
          v-model="state1"
          :fetch-suggestions="querySearch"
          placeholder="请输入内容"
          @select="handleSelect"
        ></fx-autocomplete>
      </fx-col>
      <fx-col :span="12">
        <div class="sub-title">输入后匹配输入建议</div>
        <fx-autocomplete
          class="inline-input"
          v-model="state2"
          :fetch-suggestions="querySearch"
          placeholder="请输入内容"
          :trigger-on-focus="false"
          @select="handleSelect"
        ></fx-autocomplete>
      </fx-col>
    </fx-row>
    <script>
      export default {
        data() {
          return {
            restaurants: [],
            state1: '',
            state2: ''
          };
        },
        methods: {
          querySearch(queryString, cb) {
            var restaurants = this.restaurants;
            var results = queryString ? restaurants.filter(this.createFilter(queryString)) : restaurants;
            // 调用 callback 返回建议列表的数据
            cb(results);
          },
          createFilter(queryString) {
            return (restaurant) => {
              return (restaurant.value.toLowerCase().indexOf(queryString.toLowerCase()) === 0);
            };
          },
          loadAll() {
            return [
              { "value": "三全鲜食(北新泾店)", "address": "长宁区新渔路144号" },
              { "value": "Hot honey 首尔炸鸡(仙霞路)", "address": "上海市长宁区淞虹路661号" },
              { "value": "新旺角茶餐厅", "address": "上海市普陀区真北路988号创邑金沙谷6号楼113" },
              { "value": "泷千家(天山西路店)", "address": "天山西路438号" },
              { "value": "胖仙女纸杯蛋糕(上海凌空店)", "address": "上海市长宁区金钟路968号1幢18号楼一层商铺18-101" },
              { "value": "贡茶", "address": "上海市长宁区金钟路633号" },
              { "value": "豪大大香鸡排超级奶爸", "address": "上海市嘉定区曹安公路曹安路1685号" },
              { "value": "茶芝兰(奶茶,手抓饼)", "address": "上海市普陀区同普路1435号" },
              { "value": "十二泷町", "address": "上海市北翟路1444弄81号B幢-107" },
              { "value": "星移浓缩咖啡", "address": "上海市嘉定区新郁路817号" },
              { "value": "阿姨奶茶/豪大大", "address": "嘉定区曹安路1611号" },
              { "value": "新麦甜四季甜品炸鸡", "address": "嘉定区曹安公路2383弄55号" },
              { "value": "Monica摩托主题咖啡店", "address": "嘉定区江桥镇曹安公路2409号1F,2383弄62号1F" },
              { "value": "浮生若茶(凌空soho店)", "address": "上海长宁区金钟路968号9号楼地下一层" },
              { "value": "NONO JUICE  鲜榨果汁", "address": "上海市长宁区天山西路119号" },
              { "value": "CoCo都可(北新泾店)", "address": "上海市长宁区仙霞西路" },
              { "value": "快乐柠檬(神州智慧店)", "address": "上海市长宁区天山西路567号1层R117号店铺" },
              { "value": "Merci Paul cafe", "address": "上海市普陀区光复西路丹巴路28弄6号楼819" },
              { "value": "猫山王(西郊百联店)", "address": "上海市长宁区仙霞西路88号第一层G05-F01-1-306" },
              { "value": "枪会山", "address": "上海市普陀区棕榈路" },
              { "value": "纵食", "address": "元丰天山花园(东门) 双流路267号" },
              { "value": "钱记", "address": "上海市长宁区天山西路" },
              { "value": "壹杯加", "address": "上海市长宁区通协路" },
              { "value": "唦哇嘀咖", "address": "上海市长宁区新泾镇金钟路999号2幢(B幢)第01层第1-02A单元" },
              { "value": "爱茜茜里(西郊百联)", "address": "长宁区仙霞西路88号1305室" },
              { "value": "爱茜茜里(近铁广场)", "address": "上海市普陀区真北路818号近铁城市广场北区地下二楼N-B2-O2-C商铺" },
              { "value": "鲜果榨汁(金沙江路和美广店)", "address": "普陀区金沙江路2239号金沙和美广场B1-10-6" },
              { "value": "开心丽果(缤谷店)", "address": "上海市长宁区威宁路天山路341号" },
              { "value": "超级鸡车(丰庄路店)", "address": "上海市嘉定区丰庄路240号" },
              { "value": "妙生活果园(北新泾店)", "address": "长宁区新渔路144号" },
              { "value": "香宜度麻辣香锅", "address": "长宁区淞虹路148号" },
              { "value": "凡仔汉堡(老真北路店)", "address": "上海市普陀区老真北路160号" },
              { "value": "港式小铺", "address": "上海市长宁区金钟路968号15楼15-105室" },
              { "value": "蜀香源麻辣香锅(剑河路店)", "address": "剑河路443-1" },
              { "value": "北京饺子馆", "address": "长宁区北新泾街道天山西路490-1号" },
              { "value": "饭典*新简餐(凌空SOHO店)", "address": "上海市长宁区金钟路968号9号楼地下一层9-83室" },
              { "value": "焦耳·川式快餐(金钟路店)", "address": "上海市金钟路633号地下一层甲部" },
              { "value": "动力鸡车", "address": "长宁区仙霞西路299弄3号101B" },
              { "value": "浏阳蒸菜", "address": "天山西路430号" },
              { "value": "四海游龙(天山西路店)", "address": "上海市长宁区天山西路" },
              { "value": "樱花食堂(凌空店)", "address": "上海市长宁区金钟路968号15楼15-105室" },
              { "value": "壹分米客家传统调制米粉(天山店)", "address": "天山西路428号" },
              { "value": "福荣祥烧腊(平溪路店)", "address": "上海市长宁区协和路福泉路255弄57-73号" },
              { "value": "速记黄焖鸡米饭", "address": "上海市长宁区北新泾街道金钟路180号1层01号摊位" },
              { "value": "红辣椒麻辣烫", "address": "上海市长宁区天山西路492号" },
              { "value": "(小杨生煎)西郊百联餐厅", "address": "长宁区仙霞西路88号百联2楼" },
              { "value": "阳阳麻辣烫", "address": "天山西路389号" },
              { "value": "南拳妈妈龙虾盖浇饭", "address": "普陀区金沙江路1699号鑫乐惠美食广场A13" }
            ];
          },
          handleSelect(item) {
            console.log(item,this.state1);
          }
        },
        mounted() {
          this.restaurants = this.loadAll();
        }
      }
    </script>
    
    显示代码 复制代码 复制代码

    # 自定义模板

    可自定义输入建议的显示

    使用scoped slot自定义输入建议的模板。该 scope 的参数为item,表示当前输入建议对象。

    <fx-autocomplete
      popper-class="my-autocomplete"
      v-model="state"
      :fetch-suggestions="querySearch"
      placeholder="请输入内容"
      @select="handleSelect">
      <i
        class="el-icon-edit el-input__icon"
        slot="suffix"
        @click="handleIconClick">
      </i>
      <template slot-scope="{ item }">
        <div class="name">{{ item.value }}</div>
        <span class="addr">{{ item.address }}</span>
      </template>
    </fx-autocomplete>
    
    <style>
    .my-autocomplete {
      li {
        line-height: normal;
        padding: 7px;
    
        .name {
          text-overflow: ellipsis;
          overflow: hidden;
        }
        .addr {
          font-size: 12px;
          color: #b4b4b4;
        }
    
        .highlighted .addr {
          color: #ddd;
        }
      }
    }
    </style>
    
    <script>
      export default {
        data() {
          return {
            restaurants: [],
            state: ''
          };
        },
        methods: {
          querySearch(queryString, cb) {
            var restaurants = this.restaurants;
            var results = queryString ? restaurants.filter(this.createFilter(queryString)) : restaurants;
            // 调用 callback 返回建议列表的数据
            cb(results);
          },
          createFilter(queryString) {
            return (restaurant) => {
              return (restaurant.value.toLowerCase().indexOf(queryString.toLowerCase()) === 0);
            };
          },
          loadAll() {
            return [
              { "value": "三全鲜食(北新泾店)", "address": "长宁区新渔路144号" },
              { "value": "Hot honey 首尔炸鸡(仙霞路)", "address": "上海市长宁区淞虹路661号" },
              { "value": "新旺角茶餐厅", "address": "上海市普陀区真北路988号创邑金沙谷6号楼113" },
              { "value": "泷千家(天山西路店)", "address": "天山西路438号" },
              { "value": "胖仙女纸杯蛋糕(上海凌空店)", "address": "上海市长宁区金钟路968号1幢18号楼一层商铺18-101" },
              { "value": "贡茶", "address": "上海市长宁区金钟路633号" },
              { "value": "豪大大香鸡排超级奶爸", "address": "上海市嘉定区曹安公路曹安路1685号" },
              { "value": "茶芝兰(奶茶,手抓饼)", "address": "上海市普陀区同普路1435号" },
              { "value": "十二泷町", "address": "上海市北翟路1444弄81号B幢-107" },
              { "value": "星移浓缩咖啡", "address": "上海市嘉定区新郁路817号" },
              { "value": "阿姨奶茶/豪大大", "address": "嘉定区曹安路1611号" },
              { "value": "新麦甜四季甜品炸鸡", "address": "嘉定区曹安公路2383弄55号" },
              { "value": "Monica摩托主题咖啡店", "address": "嘉定区江桥镇曹安公路2409号1F,2383弄62号1F" },
              { "value": "浮生若茶(凌空soho店)", "address": "上海长宁区金钟路968号9号楼地下一层" },
              { "value": "NONO JUICE  鲜榨果汁", "address": "上海市长宁区天山西路119号" },
              { "value": "CoCo都可(北新泾店)", "address": "上海市长宁区仙霞西路" },
              { "value": "快乐柠檬(神州智慧店)", "address": "上海市长宁区天山西路567号1层R117号店铺" },
              { "value": "Merci Paul cafe", "address": "上海市普陀区光复西路丹巴路28弄6号楼819" },
              { "value": "猫山王(西郊百联店)", "address": "上海市长宁区仙霞西路88号第一层G05-F01-1-306" },
              { "value": "枪会山", "address": "上海市普陀区棕榈路" },
              { "value": "纵食", "address": "元丰天山花园(东门) 双流路267号" },
              { "value": "钱记", "address": "上海市长宁区天山西路" },
              { "value": "壹杯加", "address": "上海市长宁区通协路" },
              { "value": "唦哇嘀咖", "address": "上海市长宁区新泾镇金钟路999号2幢(B幢)第01层第1-02A单元" },
              { "value": "爱茜茜里(西郊百联)", "address": "长宁区仙霞西路88号1305室" },
              { "value": "爱茜茜里(近铁广场)", "address": "上海市普陀区真北路818号近铁城市广场北区地下二楼N-B2-O2-C商铺" },
              { "value": "鲜果榨汁(金沙江路和美广店)", "address": "普陀区金沙江路2239号金沙和美广场B1-10-6" },
              { "value": "开心丽果(缤谷店)", "address": "上海市长宁区威宁路天山路341号" },
              { "value": "超级鸡车(丰庄路店)", "address": "上海市嘉定区丰庄路240号" },
              { "value": "妙生活果园(北新泾店)", "address": "长宁区新渔路144号" },
              { "value": "香宜度麻辣香锅", "address": "长宁区淞虹路148号" },
              { "value": "凡仔汉堡(老真北路店)", "address": "上海市普陀区老真北路160号" },
              { "value": "港式小铺", "address": "上海市长宁区金钟路968号15楼15-105室" },
              { "value": "蜀香源麻辣香锅(剑河路店)", "address": "剑河路443-1" },
              { "value": "北京饺子馆", "address": "长宁区北新泾街道天山西路490-1号" },
              { "value": "饭典*新简餐(凌空SOHO店)", "address": "上海市长宁区金钟路968号9号楼地下一层9-83室" },
              { "value": "焦耳·川式快餐(金钟路店)", "address": "上海市金钟路633号地下一层甲部" },
              { "value": "动力鸡车", "address": "长宁区仙霞西路299弄3号101B" },
              { "value": "浏阳蒸菜", "address": "天山西路430号" },
              { "value": "四海游龙(天山西路店)", "address": "上海市长宁区天山西路" },
              { "value": "樱花食堂(凌空店)", "address": "上海市长宁区金钟路968号15楼15-105室" },
              { "value": "壹分米客家传统调制米粉(天山店)", "address": "天山西路428号" },
              { "value": "福荣祥烧腊(平溪路店)", "address": "上海市长宁区协和路福泉路255弄57-73号" },
              { "value": "速记黄焖鸡米饭", "address": "上海市长宁区北新泾街道金钟路180号1层01号摊位" },
              { "value": "红辣椒麻辣烫", "address": "上海市长宁区天山西路492号" },
              { "value": "(小杨生煎)西郊百联餐厅", "address": "长宁区仙霞西路88号百联2楼" },
              { "value": "阳阳麻辣烫", "address": "天山西路389号" },
              { "value": "南拳妈妈龙虾盖浇饭", "address": "普陀区金沙江路1699号鑫乐惠美食广场A13" }
            ];
          },
          handleSelect(item) {
            console.log(item);
          },
          handleIconClick(ev) {
            console.log(ev);
          }
        },
        mounted() {
          this.restaurants = this.loadAll();
        }
      }
    </script>
    
    显示代码 复制代码 复制代码

    # 远程搜索

    从服务端搜索数据

    <fx-autocomplete
      v-model="state"
      :fetch-suggestions="querySearchAsync"
      placeholder="请输入内容"
      @select="handleSelect"
    ></fx-autocomplete>
    <script>
      export default {
        data() {
          return {
            restaurants: [],
            state: '',
            timeout:  null
          };
        },
        methods: {
          loadAll() {
            return [
              { "value": "三全鲜食(北新泾店)", "address": "长宁区新渔路144号" },
              { "value": "Hot honey 首尔炸鸡(仙霞路)", "address": "上海市长宁区淞虹路661号" },
              { "value": "新旺角茶餐厅", "address": "上海市普陀区真北路988号创邑金沙谷6号楼113" },
              { "value": "泷千家(天山西路店)", "address": "天山西路438号" },
              { "value": "胖仙女纸杯蛋糕(上海凌空店)", "address": "上海市长宁区金钟路968号1幢18号楼一层商铺18-101" },
              { "value": "贡茶", "address": "上海市长宁区金钟路633号" },
              { "value": "豪大大香鸡排超级奶爸", "address": "上海市嘉定区曹安公路曹安路1685号" },
              { "value": "茶芝兰(奶茶,手抓饼)", "address": "上海市普陀区同普路1435号" },
              { "value": "十二泷町", "address": "上海市北翟路1444弄81号B幢-107" },
              { "value": "星移浓缩咖啡", "address": "上海市嘉定区新郁路817号" },
              { "value": "阿姨奶茶/豪大大", "address": "嘉定区曹安路1611号" },
              { "value": "新麦甜四季甜品炸鸡", "address": "嘉定区曹安公路2383弄55号" },
              { "value": "Monica摩托主题咖啡店", "address": "嘉定区江桥镇曹安公路2409号1F,2383弄62号1F" },
              { "value": "浮生若茶(凌空soho店)", "address": "上海长宁区金钟路968号9号楼地下一层" },
              { "value": "NONO JUICE  鲜榨果汁", "address": "上海市长宁区天山西路119号" },
              { "value": "CoCo都可(北新泾店)", "address": "上海市长宁区仙霞西路" },
              { "value": "快乐柠檬(神州智慧店)", "address": "上海市长宁区天山西路567号1层R117号店铺" },
              { "value": "Merci Paul cafe", "address": "上海市普陀区光复西路丹巴路28弄6号楼819" },
              { "value": "猫山王(西郊百联店)", "address": "上海市长宁区仙霞西路88号第一层G05-F01-1-306" },
              { "value": "枪会山", "address": "上海市普陀区棕榈路" },
              { "value": "纵食", "address": "元丰天山花园(东门) 双流路267号" },
              { "value": "钱记", "address": "上海市长宁区天山西路" },
              { "value": "壹杯加", "address": "上海市长宁区通协路" },
              { "value": "唦哇嘀咖", "address": "上海市长宁区新泾镇金钟路999号2幢(B幢)第01层第1-02A单元" },
              { "value": "爱茜茜里(西郊百联)", "address": "长宁区仙霞西路88号1305室" },
              { "value": "爱茜茜里(近铁广场)", "address": "上海市普陀区真北路818号近铁城市广场北区地下二楼N-B2-O2-C商铺" },
              { "value": "鲜果榨汁(金沙江路和美广店)", "address": "普陀区金沙江路2239号金沙和美广场B1-10-6" },
              { "value": "开心丽果(缤谷店)", "address": "上海市长宁区威宁路天山路341号" },
              { "value": "超级鸡车(丰庄路店)", "address": "上海市嘉定区丰庄路240号" },
              { "value": "妙生活果园(北新泾店)", "address": "长宁区新渔路144号" },
              { "value": "香宜度麻辣香锅", "address": "长宁区淞虹路148号" },
              { "value": "凡仔汉堡(老真北路店)", "address": "上海市普陀区老真北路160号" },
              { "value": "港式小铺", "address": "上海市长宁区金钟路968号15楼15-105室" },
              { "value": "蜀香源麻辣香锅(剑河路店)", "address": "剑河路443-1" },
              { "value": "北京饺子馆", "address": "长宁区北新泾街道天山西路490-1号" },
              { "value": "饭典*新简餐(凌空SOHO店)", "address": "上海市长宁区金钟路968号9号楼地下一层9-83室" },
              { "value": "焦耳·川式快餐(金钟路店)", "address": "上海市金钟路633号地下一层甲部" },
              { "value": "动力鸡车", "address": "长宁区仙霞西路299弄3号101B" },
              { "value": "浏阳蒸菜", "address": "天山西路430号" },
              { "value": "四海游龙(天山西路店)", "address": "上海市长宁区天山西路" },
              { "value": "樱花食堂(凌空店)", "address": "上海市长宁区金钟路968号15楼15-105室" },
              { "value": "壹分米客家传统调制米粉(天山店)", "address": "天山西路428号" },
              { "value": "福荣祥烧腊(平溪路店)", "address": "上海市长宁区协和路福泉路255弄57-73号" },
              { "value": "速记黄焖鸡米饭", "address": "上海市长宁区北新泾街道金钟路180号1层01号摊位" },
              { "value": "红辣椒麻辣烫", "address": "上海市长宁区天山西路492号" },
              { "value": "(小杨生煎)西郊百联餐厅", "address": "长宁区仙霞西路88号百联2楼" },
              { "value": "阳阳麻辣烫", "address": "天山西路389号" },
              { "value": "南拳妈妈龙虾盖浇饭", "address": "普陀区金沙江路1699号鑫乐惠美食广场A13" }
            ];
          },
          querySearchAsync(queryString, cb) {
            var restaurants = this.restaurants;
            var results = queryString ? restaurants.filter(this.createStateFilter(queryString)) : restaurants;
    
            clearTimeout(this.timeout);
            this.timeout = setTimeout(() => {
              cb(results);
            }, 3000 * Math.random());
          },
          createStateFilter(queryString) {
            return (state) => {
              return (state.value.toLowerCase().indexOf(queryString.toLowerCase()) === 0);
            };
          },
          handleSelect(item) {
            console.log(item);
          }
        },
        mounted() {
          this.restaurants = this.loadAll();
        }
      };
    </script>
    
    显示代码 复制代码 复制代码

    # 输入长度限制

    maxlength 和 minlength 是原生属性,用来限制输入框的字符长度,其中字符长度是用 Javascript 的字符串长度统计的。对于类型为 text 或 textarea 的输入框,在使用 maxlength 属性限制最大输入长度的同时,可通过设置 show-word-limit 属性来展示字数统计。

    <fx-input
      type="text"
      placeholder="请输入内容"
      v-model="text"
      maxlength="10"
      show-word-limit
    >
    </fx-input>
    <div style="margin: 20px 0;"></div>
    <fx-input
      type="textarea"
      placeholder="请输入内容"
      v-model="textarea"
      maxlength="30"
      show-word-limit
    >
    </fx-input>
    
    <script>
    export default {
      data() {
        return {
          text: '',
          textarea: ''
        }
      }
    }
    </script>
    
    显示代码 复制代码 复制代码

    # Input Attributes

    参数 说明 类型 可选值 默认值
    type 类型 string text,textarea 和其他 原生 input 的 type 值 (opens new window) text
    value / v-model 绑定值。 当collapse-tags为true时,值为数组 string / number/array — —
    maxlength 原生属性,最大输入长度 number — —
    minlength 原生属性,最小输入长度 number — —
    show-word-limit 是否显示输入字数统计,只在 type = "text" 或 type = "textarea" 时有效 boolean — false
    placeholder 输入框占位文本 string — —
    clearable 是否可清空 boolean — false
    show-password 是否显示切换密码图标 boolean — false
    disabled 禁用 boolean — false
    size 输入框尺寸,只在 type!="textarea" 时有效 string medium / small / mini —
    prefix-icon 输入框头部图标 string — —
    suffix-icon 输入框尾部图标 string — —
    rows 输入框行数,只对 type="textarea" 有效 number — 2
    autosize 自适应内容高度,只对 type="textarea" 有效,可传入对象,如,{ minRows: 2, maxRows: 6 } boolean / object — false
    autocomplete 原生属性,自动补全 string on, off off
    auto-complete 下个主版本弃用 string on, off off
    name 原生属性 string — —
    readonly 原生属性,是否只读 boolean — false
    max 原生属性,设置最大值 — — —
    min 原生属性,设置最小值 — — —
    step 原生属性,设置输入字段的合法数字间隔 — — —
    resize 控制是否能被用户缩放 string none, both, horizontal, vertical —
    autofocus 原生属性,自动获取焦点 boolean true, false false
    form 原生属性 string — —
    label 输入框关联的label文字 string — —
    tabindex 输入框的tabindex string - -
    validate-event 输入时是否触发表单的校验 boolean - true
    collapse-tags 设置为true后,输入值以tag方式显示,值为数组 boolean - false
    is-blur-fold 设置collapse-tags为true后,设置此值为true,则输入框失去焦点后折叠起来,false为不折叠 boolean - true
    validate-when-input 输入时触发表单的校验 boolean - true
    validate-when-blur 失去焦点时触发表单的校验 boolean - false

    # Input Slots

    name 说明
    prefix 输入框头部内容,只对 type="text" 有效
    suffix 输入框尾部内容,只对 type="text" 有效
    prepend 输入框前置内容,只对 type="text" 有效
    append 输入框后置内容,只对 type="text" 有效

    # Input Events

    事件名称 说明 回调参数
    blur 在 Input 失去焦点时触发 (event: Event)
    focus 在 Input 获得焦点时触发 (event: Event)
    change 在 Input 值改变时触发 (value: string | number)
    clear 在点击由 clearable 属性生成的清空按钮时触发 —

    # Input Methods

    方法名 说明 参数
    focus 使 input 获取焦点 —
    blur 使 input 失去焦点 —
    select 选中 input 中的文字 —

    # Autocomplete Attributes

    参数 说明 类型 可选值 默认值
    placeholder 输入框占位文本 string — —
    disabled 禁用 boolean — false
    value-key 输入建议对象中用于显示的键名 string — value
    value 必填值,输入绑定值 string — —
    debounce 获取输入建议的去抖延时 number — 300
    placement 菜单弹出位置 string top / top-start / top-end / bottom / bottom-start / bottom-end bottom-start
    fetch-suggestions 返回输入建议的方法,仅当您的输入建议数据 resolve 时,通过调用 callback(data:[]) 来返回它 Function(queryString, callback) — —
    popper-class Autocomplete 下拉列表的类名 string — —
    trigger-on-focus 是否在输入框 focus 时显示建议列表 boolean — true
    name 原生属性 string — —
    select-when-unmatched 在输入没有任何匹配建议的情况下,按下回车是否触发 select 事件 boolean — false
    label 输入框关联的label文字 string — —
    prefix-icon 输入框头部图标 string — —
    suffix-icon 输入框尾部图标 string — —
    hide-loading 是否隐藏远程加载时的加载图标 boolean — false
    popper-append-to-body 是否将下拉列表插入至 body 元素。在下拉列表的定位出现问题时,可将该属性设置为 false boolean - true
    highlight-first-item 是否默认突出显示远程搜索建议中的第一项 boolean — false

    # Autocomplete Slots

    name 说明
    prefix 输入框头部内容
    suffix 输入框尾部内容
    prepend 输入框前置内容
    append 输入框后置内容

    # Autocomplete Scoped Slot

    name 说明
    — 自定义输入建议,参数为 { item }

    # Autocomplete Events

    事件名称 说明 回调参数
    select 点击选中建议项时触发 选中建议项

    # Autocomplete Methods

    方法名 说明 参数
    focus 使 input 获取焦点 -

    # 移动端 输入框

    # 使用指南
    # 基础用法
    <template>
      <fx-input
        v-model="value"
        label="label"
      ></fx-input>
    </template>
    
    # input类型自定义

    支持所有input原生类型,包括textarea

    textarea类型下支持显示字数:

    <template>
      <fx-input
        v-model="value"
        label="label"
        type="textarea"
        :maxlength="1000"
      ></fx-input>
    </template>
    

    支持监听input的原生事件:

    <template>
      <fx-input
        v-model="value"
        label="label"
        type="number"
        @input="onInput"
        @focus="onFocus"
        @blur="onBlur"
        @keypress="onKeypress"
      ></fx-input>
    </template>
    
    # action模式

    action模式就是带点击反馈且不可输入的field,该模式下支持监听click事件。

    <template>
      <fx-input
        v-model="value"
        mode="action"
        label="label"
        @click="onClick"
      ></fx-input>
    </template>
    
    # 禁用和只读
    <template>
      <fx-input
        v-model="value"
        label="只读/禁用"
        readonly
        disabled
      ></fx-input>
    </template>
    
    # 错误提示

    传入的errMsg不为空时,就会显示错误提示。

    <template>
      <fx-input
        v-model="value"
        label="密码"
        type="password"
        errMsg="密码错误"
      ></fx-input>
    </template>
    
    # 自定义扩展
    <template>
      <fx-input v-model="value">
        <div slot="label">
          <span class="dta-icon-font__waiting"></span>
          自定义
        </div>
        <div slot="floot">
          <span class="dta-icon-font__question"></span>
        </div>
      </fx-input>
    </template>
    
    # API
    option description type acceptable values default
    v-model 值 String --
    label 左侧标签 String|Number --
    placeholder 占位符内容 String input模式下默认为请输入,action模式下默认为请选择
    mode field模式 String action, input input
    type 输入框类型,支持所有input原生类型 String text, textarea, number等 text
    clearable 是否展示清除按钮 Boolean true
    readonly 是否只读 Boolean false
    disabled 是否禁用 Boolean false
    required 是否必填 Boolean false
    errMsg 错误信息 String --
    maxlength 允许输入的最大长度 Number --
    showCount textarea类型下是否展示字数 Boolean true
    # Events
    Event description params
    click 点击cell时 event

    input模式下,支持input标签的所有原生事件,如focus、blur等等

    # Slots
    name description
    label 左侧标签
    floot 尾部自定义block
    多选框
    计数器

    ← 多选框 计数器→

    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式