`

将当前列表<select>中选中的值<option>移动到目标列表

阅读更多

ajax公共文件 ajax.js

 

 

/***************************************************
 将当前列表<select>中选中的值<option>移动到目标列表
 @param selfId 当前列表id<Select id="xxx">
 @param targetId 目标列表的id
 @author wangw 
 @version 1.0
 2006-05-10
****************************************************/
function moveElement(selfId,targetId){
      var self=document.getElementById(selfId);//根据id得到当前列表(select)对象
      var selfOptions=self.childNodes;//得到当前列表的option对象
      var target=document.getElementById(targetId);//根据id得到目标列表select对象
      var selfOption=null;
      for(var i=0;i<selfOptions.length;i++){
          selfOption=selfOptions[i];//得到第i个option对象
          if(selfOption.selected){//判断是否被选中
              self.removeChild(self.childNodes[i--]);//将当前列表中的被选中元素移除,并把计数器减一,因为移除一个元素后其他元素的索引会发生变化
              var option=document.createElement("option");//创建一个新的option对象
              option.setAttribute("value",selfOption.value);//设置option对象的value属性
              option.appendChild(document.createTextNode(selfOption.text));//设置option的显示信息
              target.appendChild(option);//将option对象插入如目标列表
          }
      }
}
/***************************************************
显示进度条
@param 提示信息
***************************************************/
function showProcessBar(msg){
 var str_div = '<div align="center" id="ProcessBar" style="position:absolute; visibility:hidden; left:400; top:300; width:150; height:100; z-index:1000;">';
 str_div += '<table border="0" width="300" height="100" cellspacing="1" cellpadding="0" class="ReportTable">';
 str_div += '<tr class="TableContent">';
 str_div += '<td align="center">'+msg+'<br>';
 str_div += '<img src="../images/process_bar2.gif" border="0">';
 str_div += '</td>';
 str_div += '</tr>';
 str_div += '</table>';
 str_div += '</div>';

 document.write(str_div);
}
/***************************************************
 Ajax应用
 @author wangw  
 @version 1.0
 2006-05-10
****************************************************/
  var xmlHttp;
  var handleResponse;
  /**
    根据不同浏览器创建xmlHttp对象
  */
  function createXMLHttpRequest(){
    if(window.ActiveXObject){//ie浏览器
    xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
 }else if(window.XMLHttpRequest){//其他浏览器
   xmlHttp=new XMLHttpRequest();
 }
  }
 
 
  /**
    向指定的url发送请求
    并指定处理服务器请求的方法
    一般情况下,服务器返回一个xml
    @param url 处理请求的服务器端程序(servlet、action。。。)
    @param handle 处理服务器请求的方法名

  */
  function sendRequest(url,handle,postStr){
     handleResponse=handle;
     createXMLHttpRequest();
  xmlHttp.onreadystatechange=handleStateChance;
  if(postStr==null||postStr==""){
     xmlHttp.open("GET",url,"false");
     xmlHttp.send(null);
  }else{
     xmlHttp.open("POST",url,"true");
     xmlHttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
     xmlHttp.send(postStr);
  }
  }
 
   function sendRequestByType(url,handle,postStr,isAynchronous){
     handleResponse=handle;
     createXMLHttpRequest();
  xmlHttp.onreadystatechange=handleStateChance;
  if(postStr==null||postStr==""){
     xmlHttp.open("GET",url,isAynchronous);
     xmlHttp.send(null);
  }else{
     xmlHttp.open("POST",url,isAynchronous);
     xmlHttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
     xmlHttp.send(postStr);
  }
  }
 
  function handleStateChance(){
    if(xmlHttp.readyState==4){
  if(xmlHttp.status==200){
        handleResponse();
    }
 }
  }
  /*************************************************/

 

在页面中使用

<script language="javascript" src="hr/js/helper.js" type=""></script>


function change(){
 var type = document.getElementById("accountDetailVO.type").value;
 var url = "accountDetailAddAction.do?operate=checkType&type="+type;
 sendRequest(url,updateList);//向服务器发送请求,并用处理服务器请求的函数指针作为参数 
}
//
function updateList(){
 var results = xmlHttp.responseXML.getElementsByTagName("select");  
 var metadatas = accountDetailForm("accountDetailVO.item"); //目标对象
 while(metadatas.childNodes.length>0){
  metadatas.removeChild(metadatas.childNodes[0]);
 }
 var option = null;
 option = document.createElement("option");
 option.setAttribute("value","");
 option.appendChild(document.createTextNode("请选择"));        
 metadatas.appendChild(option);
 for(var i=0;i<results.length;i++){
      option = document.createElement("option");
      option.setAttribute("value",results[i].firstChild.text);
      option.appendChild(document.createTextNode(results[i].lastChild.text));        
      metadatas.appendChild(option);
 }
}

 

在java类中互动

 String type = request.getParameter("type");
   try {
    StringBuffer results = new StringBuffer("<metadata>");
    AllowanceType allowanceType = typeLogic.getAllowanceTypeByType(type); 
    List typeList = typeLogic.getAllowTypeChildList(allowanceType.getCode()); 
    for (Iterator iterator = typeList.iterator(); iterator.hasNext();) {
     AllowanceType alloType = (AllowanceType)iterator.next();
     results.append("<select>");
     results.append("<key>");
     results.append(alloType.getType());
     results.append("</key>");
     results.append("<value>");
     results.append(alloType.getTypeName());
     results.append("</value>");
     results.append("</select>");
    }
    results.append("</metadata>");
    response.setContentType("text/xml;charset=UTF-8");
    request.setCharacterEncoding("GBK");
    response.getWriter().write(results.toString());
   } catch (Exception e) {
    log.error(e);
   }
   return null;

分享到:
评论

相关推荐

    select的左右移

    - 创建新的`Option`对象,并将其添加到目标`&lt;select&gt;`中。 - 从源`&lt;select&gt;`中移除相应的选项。 #### 2.2 具体实现代码分析 - **函数`moveAtoBall`**:将`objA`中的所有选项移动到`objB`中。 ```javascript ...

    Bootstrap框架下下拉框select搜索功能

    &lt;option class="get-class" disabled&gt;ox&lt;/option&gt; &lt;/select&gt; ``` 在页面加载完成后,需要初始化`bootstrap-select`插件,这可以通过JavaScript来完成: ```javascript $(window).on('load', function () { $('....

    两个select多选模式的选项相互移动(示例代码)

    为了保存已选选项的值,可以创建一个隐藏的`input`元素,例如`&lt;input type="hidden" id="TRoleList" /&gt;`,并使用`getdata`函数将已选`select`的值转换为逗号分隔的字符串,存储在该隐藏字段中。 以下是一个完整的...

    jquery 操作两个select实现值之间的互相传递

    在本文中,我们将深入探讨如何利用 jQuery 来操作两个 `&lt;select&gt;` 元素,实现值之间的互相传递。这对于构建动态表单或者需要用户交互选择的界面非常有用。 首先,我们需要理解 `&lt;select&gt;` 元素在 HTML 中的作用。`...

    js select多选列表传值代码

    1. `fMoveSelectedOptionsLeftToRight(oLeft, oRight)`:这个函数用于将左侧`select`中选中的选项移动到右侧。它首先检查两个`select`元素是否存在,然后遍历左侧`select`的`options`数组,检查每个选项是否被选中。...

    JS动态的把左边列表添加到右边的实现代码(可上下移动)

    在JavaScript前端开发中,我们经常需要处理用户交互,例如将左边列表中的选项移动到右边,或者反之。这个功能在各种应用场景中都很常见,比如设置、配置界面等。本篇文章将详细讲解如何用JavaScript实现这样的功能,...

    javascript select控件间内容互相移动

    1. `add()`函数:这个函数用于将`selectfrom`中选中的选项移动到`select2`中。它通过遍历`selectfrom`的所有选项,检查每个选项是否被选中(`selected`属性为`true`),如果是,则将其添加到`select2`中。 2. `...

    两个select之间option的互相添加操作(jquery实现)

    源list中选中的option移动到目标list中,若目标list中已存在则该option不添加. append — 源list中选中的option不会删除.源list中选中的option添加到目标list的后面,若目标list中已存在则该option不添加. isAll参数

    使用javascript实现ListBox左右全选,单选,多选,全请

    移动功能通过两个ListBox以及两个按钮实现,按钮的点击事件分别调用`moveLeftOrRight`函数,该函数负责交换两个ListBox中选中选项的位置。 ```javascript function moveLeftOrRight(fromSelect, toSelect) { var ...

    JQuery下拉框应用示例介绍

    在第一个代码段中,作者演示了如何通过点击一个按钮(假设按钮的id为‘add’),来获取第一个下拉框(id为‘select1’)中选中的选项,并将其移动到第二个下拉框(id为‘select2’)中。具体的实现步骤如下: 1. ...

    使用jquery实现select添加实现后台权限添加的效果

    在本文中,我们将深入探讨如何使用jQuery来实现一个基本的后台权限管理功能,特别是涉及到`select`元素的添加和删除操作。这个功能允许用户通过双击或者点击按钮在两个多选列表之间移动选项,模拟权限分配的过程。 ...

    js处理json以及字符串的比较等常用操作

    通过在列表1中选中要移动的项,并在点击“左移”或“右移”按钮后,将选中的项移动到另一个列表中。 从代码内容来看,还包含了一些基础的HTML和JavaScript语法,例如如何在HTML页面中创建元素,如何使用JavaScript...

Global site tag (gtag.js) - Google Analytics