原生HTML Select下拉多选 + vue

项目依赖:

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

最终实现结果:

1.自动切换中/英文

原生HTML Select下拉多选 + vue_第1张图片

原生HTML Select下拉多选 + vue_第2张图片

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

原生HTML Select下拉多选 + vue_第3张图片

实现代码:

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

2.页面上添加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("");  
            $("#selector_show_en").append("");
          }else{
            $("#selector_show_en").append("");
            $("#selector_show_zh").append("");
          }
          $("#selector_add_zh").append("");
          $("#selector_add_en").append("");

          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("");  
            $("#selector_edit_en").append("");
          }else{
            $("#selector_edit_zh").append("");
            $("#selector_edit_en").append("");
          }
        });
        //刷新列表中的数据
        $('#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');
}

 

你可能感兴趣的:(前端,html,bootstrap)