您现在的位置:首页 >> 前端 >> 内容

web前端左右选择框移动,及查询的实现教程

时间:2017/7/25 11:38:34 点击:

  核心提示:web前端左右选择框移动,及查询当输入框输入信息进行查询时,若选择框中有则置顶且变亮,具体代码如下:!DOCTYPE htmlhtmlhead!-- 选择框移动js --script //选中添加到右...

web前端左右选择框移动,及查询

当输入框输入信息进行查询时,若选择框中有则置顶且变亮,具体代码如下:

<!DOCTYPE html>  
<html>  
<head>  
  
<!-- 选择框移动js -->  
<script >  
//选中添加到右边  
function selectedToRight(){  
    // 获取select2标签  
    var select2 = document.getElementById("select2");  
    // 获取select1标签  
    var select1 = document.getElementById("select1");  
    // 获取option  
    var option1 = select1.getElementsByTagName("option");  
    // 遍历  
    for (var i=0;i<option1.length;i++) {  
        var optioni = option1[i];  
        //是否被选中  
        if(optioni.selected == true){  
            // 添加到select2里面  
            select2.appendChild(optioni);  
            //数组长度发生变化,需要处理  
            i--;  
        }  
    }  
}  
  
// 选中添加到左边  
function selectedToLeft(){  
    // 获取select2标签  
    var select2 = document.getElementById("select2");  
    // 获取select1标签  
    var select1 = document.getElementById("select1");  
    // 获取option  
    var option2 = select2.getElementsByTagName("option");  
    // 遍历  
    for (var i=0;i<option2.length;i++) {  
        var optioni = option2[i];  
        //是否被选中  
        if(optioni.selected == true){  
            // 添加到select1里面  
            select1.appendChild(optioni);  
            //数组长度发生变化,需要处理  
            i--;  
        }  
    }  
}  
  
// 全部添加到右边  
function allToRight(){  
    // 获取select2标签  
    var select2 = document.getElementById("select2");  
    // 获取select1标签  
    var select1 = document.getElementById("select1");  
    // 获取option  
    var option1 = select1.getElementsByTagName("option");  
    // 遍历  
    for (var i=0;i<option1.length;i++) {  
        var optioni = option1[i];  
        // 添加到select2里面  
        select2.appendChild(optioni);  
        //数组长度发生变化,需要处理  
        i--;  
    }  
}  
  
  
// 全部添加到左边  
function allToLeft(){  
    // 获取select2标签  
    var select2 = document.getElementById("select2");  
    // 获取select1标签  
    var select1 = document.getElementById("select1");  
    // 获取option  
    var option2 = select2.getElementsByTagName("option");  
    // 遍历  
    for (var i=0;i<option2.length;i++) {  
        var optioni = option2[i];  
        // 添加到select1里面  
        select1.appendChild(optioni);  
        //数组长度发生变化,需要处理  
        i--;  
  
    }  
}  
  
//查询选择框  
//元素id    搜索输入框id  
function search(elementId,inputId){  
    //获取搜索输入框中的内容  
    var input = document.getElementById(inputId).value;  
    if(input == ""){  
        return;  
    }  
    var spl=input.toLowerCase();//将输入值转成小写    
      
    // 获取select标签  
    var selectProjects=document.getElementById(elementId);       
     //获取select标签中所有的option子元素  
    var options=selectProjects.options;       
    var total = -1;    
    var meetArray = new Array();     //查询到的option下标数组  
    // 遍历  查询  
    for(var i=0;i<options.length;i++){      
        //取消已选择地option  
        selectProjects.options[i].selected = false;  
          
        var op_text=options[i].text.toLowerCase();//将option的文本转成小写    
        var opArray=op_text.split(spl);       
        if(spl.length>0 && opArray.length>1){  //匹配到了    
            total++;    
            meetArray[total]=i;    
        }    
    }       
    var beginIndex = 0;       
    for(var i=0;i<=total;i++){       
        var index = meetArray[i];       
        if(index!=beginIndex){       
            //置顶    
            var tempText = options[index].text;       
            var tempValue = options[index].value;       
            options[index].text = options[beginIndex].text;       
            options[index].value = options[beginIndex].value;       
            options[beginIndex].text=tempText;       
            options[beginIndex].value=tempValue;       
        }       
        beginIndex++;    
        //option选中  
        selectProjects.options[i].selected = true;    
          
    }    
      
}  
</script>  
<meta charset="UTF-8">  
<title>左右选择框</title>  
</head>  
<body>  
    <p >  
        <input type="text"  id="left" placeholder="请输入左边查询内容" >  
        <button id="search1" type="button"  onclick="search('select1','left')">查询左边</button>  
          
        <input type="text"  id="right" placeholder="请输入右边查询内容" >  
        <button id="search2" type="button" onclick="search('select2','right')">查询右边</button>  
   </p>  
    <p >  
        <p style="text-align: center">  
        <p id="s1" style="float: left;">  
            <select id="select1" multiple="multiple" style="width: 130px;height: 100px;overflow-y:auto;">  
                <option>aa</option>  
                <option>bb</option>  
                <option>cc</option>  
                <option>dd</option>  
                <option>ee</option>  
                <option>ff</option>  
                <option>gg</option>  
            </select>  
        </p>  
        <p style="float: left;">  
            <input type="button" value=">>" onclick="selectedToRight();"/><br />  
            <input type="button" value="全部选择" onclick="allToRight();"/><br />  
            <input type="button" value="<<" onclick="selectedToLeft();"/><br />  
            <input type="button" value="全部取消" onclick="allToLeft();"/>  
        </p>  
        <p id="s2" style="float: left;">  
            <select id="select2" multiple="multiple" style="width: 130px;height: 100px;overflow-y:auto;">  
            </select>  
        </p>      
    </p>  
    </p>  
</body>  
</html>  

如果需要得到后台传的数组集合来显示时,可加上ajax来实现,类似代码如下:

//显示编辑模态窗  
function showEdit() {  
      
    //清空缓存  
    $("#select1").empty();  
    $("#select2").empty();  
      
    var id = $.trim($("#assemblyId").val());  
   //通过ajax从后台拿到数据   
  $.ajax({  
      type: 'get',  
      url: '/payAssembly/get/' + id,  
      contentType: 'application/json',  
      success: function (result) {//右边的option数据  
              if(result!=null && result.length>0){    
                  //渲染右边选择框  
                  var length =result.length;  
    for(var i=0;i<length;i++){  
        var option=document.createElement("option");  
    $("#select2").append(option);  
    option.value=result[i].id;  //每个option的位置  
    option.text=result[i].payCode+":"+result[i].payName;//每个Option的值              
    }  
    //自定义数组包含方法  
    Array.prototype.mycontains = function (obj) {    
    <span style="white-space:pre">  </span>var i = this.length;    
    <span style="white-space:pre">  </span>while (i--) {    
        if (this[i].id == obj.id) {    
        return true;    
        }    
   <span style="white-space:pre">   </span>}    
    return false;    
span style="white-space:pre">   </span>}   
//渲染左边支付方式  
$.ajax({  
    type: 'POST',  
    url: '/payAssembly/getAllModes',  
    contentType: 'application/json',  
    success: function (data) {//得到左边的option数据,应先去除右边有的  
    <span style="white-space:pre">  </span>var length = data.length;  
    <span style="white-space:pre">  </span>for(var i=0;i<length;i++){  
        <span style="white-space:pre">  </span>if(!payModes.mycontains(data[i])){  
            <span style="white-space:pre">  </span>var option=document.createElement("option");  
            <span style="white-space:pre">  </span>$("#select1").append(option);  
            <span style="white-space:pre">  </span>option.value=data[i].id;  //每个option的位置  
            <span style="white-space:pre">  </span>option.text=data[i].payCode+":"+data[i].payName;//每个Option的值   
        <span style="white-space:pre">  </span>}  
    <span style="white-space:pre">  </span>}  
    }  
});  
                    
             }  
          }  
      }  
  });  

Tags:WE EB B前 前端 
作者:网络 来源:qq_3163849