原生HTML Select下拉多选 + vue

项目依赖:

  • vue.js
  • jquery.js 
  • bootstrap.min.js 
  • bootstrap.min.css 
  • bootstrap-select.min.css 
  • bootstrap-select.min.js 
  • languages.js

最终实现结果:

1.自动切换中/英文

2.编辑时带出默认值,并且勾选默认值

实现代码:

1.声明接收勾选内容的变量    showReason = [];

2.页面上添加select组件 -- 我这里分成了中文和英文

<!-- lang(自定义变量:判断当前是中文还是英文)   multiple:指定当前select为多选   title:输入框里面的默认值 -->
<select v-if="lang == 'tw'" class="selectpicker" multiple id="selector_show_zh" title=" " v-model="showReason"></select>
<select v-else class="selectpicker"  multiple title=" " id="selector_show_en" v-model="showReason"></select>

3.进入页面初始化 mouted()

4.渲染列表的主方法加入参数 -- lang:中/英文 ,showReason:勾选数据,type:区分输入框

getCustomerComplaintReasons(lang,reasons,type){
       //调用后台接口
      findCustomerComplaintReasons().then((res) => {
        var json = eval(res.data);
        //循环
        $.each(json,function(index,item){
          //英文切换成中文,勾选的是英文,匹配key值;中文切换成英文,勾选的是中文,匹配value值;
          if(reasons != undefined && (
                (lang == 'tw' && reasons.indexOf(json[index].reasonNameEn) >= 0) || 
                (lang != 'tw' && reasons.indexOf(json[index].reasonNameEn) >= 0)
              ) && type == "show"){
            $("#selector_show_zh").append("<option class='option_item' value=\""+json[index].reasonNameEn+"\" selected='selected'>"+json[index].reasonNameZh+"</option>");  
            $("#selector_show_en").append("<option class='option_item' value=\""+json[index].reasonNameEn+"\" selected='selected'>"+json[index].reasonNameEn+"</option>");
          }else{
            $("#selector_show_en").append("<option class='option_item' value=\""+json[index].reasonNameEn+"\">"+json[index].reasonNameEn+"</option>");
            $("#selector_show_zh").append("<option class='option_item' value=\""+json[index].reasonNameEn+"\">"+json[index].reasonNameZh+"</option>");
          }
          $("#selector_add_zh").append("<option class='option_item' value=\""+json[index].reasonNameEn+"\">"+json[index].reasonNameZh+"</option>");
          $("#selector_add_en").append("<option class='option_item' value=\""+json[index].reasonNameEn+"\">"+json[index].reasonNameEn+"</option>");

          if(reasons != undefined && (
                (lang == 'tw' && reasons.indexOf(json[index].reasonNameEn) >= 0) || 
                (lang != 'tw' && reasons.indexOf(json[index].reasonNameEn) >= 0)
              ) && type == "edit"){
            $("#selector_edit_zh").append("<option class='option_item' value=\""+json[index].reasonNameEn+"\" selected='selected'>"+json[index].reasonNameZh+"</option>");  
            $("#selector_edit_en").append("<option class='option_item' value=\""+json[index].reasonNameEn+"\" selected='selected'>"+json[index].reasonNameEn+"</option>");
          }else{
            $("#selector_edit_zh").append("<option class='option_item' value=\""+json[index].reasonNameEn+"\">"+json[index].reasonNameZh+"</option>");
            $("#selector_edit_en").append("<option class='option_item' value=\""+json[index].reasonNameEn+"\">"+json[index].reasonNameEn+"</option>");
          }
        });
        //刷新列表中的数据
        $('#selector_show_zh').selectpicker('refresh');
        $('#selector_show_en').selectpicker('refresh');
        $("#selector_add_zh").selectpicker('refresh');
        $("#selector_add_en").selectpicker('refresh');
        $("#selector_edit_zh").selectpicker('refresh');
        $("#selector_edit_en").selectpicker('refresh');
      });
    }

5.切换中/英文添加监听 

"$i18n.locale"() {
      this.lang = this.$i18n.locale;
      //清除选择框中的选择项的显示的value值
      this.setSelectDataNull();
      //清空列表内容
      if ( $("option.option_item").length > 0 ) {
        $("option.option_item").remove();
      }
      //重新渲染列表
      this.getCustomerComplaintReasons(this.lang,this.showReason,"show");
    }

6.编辑出现默认值且勾选

this.setSelectDataNull();
if ( $("option.option_item").length > 0 ) {
    $("option.option_item").remove();
}
this.getCustomerComplaintReasons(this.lang,res.data.reasonList.join(","),"edit");

补充两个方法:

//清除选择框中的选择项的显示的value值
setSelectDataNull(){
    $("#selector_show_zh").selectpicker('val',['noneSelectedText']);
    $("#selector_show_en").selectpicker('val',['noneSelectedText']);
    $("#selector_add_zh").selectpicker('val',['noneSelectedText']);
    $("#selector_add_en").selectpicker('val',['noneSelectedText']);
    $("#selector_edit_zh").selectpicker('val',['noneSelectedText']);
    $("#selector_edit_en").selectpicker('val',['noneSelectedText']);
},
//下拉选默认初始化加载不选择内容
cancelSelectData(){
    $("#selector_show_zh").selectpicker('deselectAll');
    $("#selector_show_en").selectpicker('deselectAll');
    $("#selector_add_zh").selectpicker('deselectAll');
    $("#selector_add_en").selectpicker('deselectAll');
    $("#selector_edit_zh").selectpicker('deselectAll');
    $("#selector_edit_en").selectpicker('deselectAll');
}

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值