`

动态加载select标签下拉框数据

阅读更多

参考:

1.示例参考:http://www.w3schools.com/jsref/coll_select_options.asp

2.js中select下拉框常用操作方法:http://www.php100.com/html/program/jquery/2013/0905/5931.html

3.js select option对象小结: http://www.jb51.net/article/44657.htm

4.js如何控制select标签哪个被选中:http://zhidao.baidu.com/link?url=z4hDFftJQ66TX4u8yjRQlnp5tmaCunK08El2Q3s0z_HDkO75FAmDb4asDQ8kOJukP4jJx-IJUJcuOmpJjaHnRa

 

加载DAO数据:(静态)

<%
List<CardTypeGroup> cardTypeGroups = CardTypeGoupDAO.gerCardTypeGroup();
	Iterator<CardTypeGroup> itCardTypeGroup = cardTypeGroups.iterator();
	String cardTypeGroupIdString = "";
	while(itCardTypeGroup.hasNext()){
		CardTypeGroup ctg = itCardTypeGroup.next();
		cardTypeGroupIdString += ctg.getCardTypeGroupId() + ",";
	}
	cardTypeGroupIdString = cardTypeGroupIdString.substring(0,cardTypeGroupIdString.length()-1);
	
	List<Denomination> denominations = DenominationDAO.gerDenomination();
	Iterator<Denomination> itDenomination= denominations.iterator();
	String denominationIdString = "";
	while(itDenomination.hasNext()){
		Denomination den = itDenomination.next();
		denominationIdString += den.getDenominationId() + ",";
	}
	denominationIdString = denominationIdString.substring(0,denominationIdString.length()-1);
	
	List<Operator> operators = OperatorDAO.gerOperator();
	Iterator<Operator> itOperator = operators.iterator();
	String operatorIdString = "";
	while(itOperator.hasNext()){
		Operator op = itOperator.next();
		operatorIdString += op.getOperatorId() + ",";
	}
	operatorIdString = operatorIdString.substring(0,operatorIdString.length()-1);
%>

 

动态加载数据:

function selectOptions(){
		console.log("selectOption");
		
		var cardTypeGroup_selectObj = document.getElementById("select_cardTypeGroupId");
		var denomination_selectObj = document.getElementById("select_denominationId");
		var operator_selectObj = document.getElementById("select_operatorId");
		
		var cardTypeGroup_datas = "<%=cardTypeGroupIdString%>".split(",");
		var denomination_datas = "<%=denominationIdString%>".split(",");
		var operator_datas = "<%=operatorIdString%>".split(",");
		
		
		//console.log("length : " + cardTypeGroup_selectObj.options.length);
		
		if(cardTypeGroup_selectObj.options.length == 1){
			for (var i = 0; i < cardTypeGroup_datas.length; i++) {
				cardTypeGroup_selectObj.options.add(new Option(cardTypeGroup_datas[i],
															   cardTypeGroup_datas[i])); //("text","value")
			}
		}
		
		if(denomination_selectObj.options.length == 1){
			for (var i = 0; i < denomination_datas.length; i++) {
				denomination_selectObj.options.add(new Option(denomination_datas[i],
															  denomination_datas[i]));
			}
		}
		
		if(operator_selectObj.options.length == 1){
			for (var i = 0; i < operator_datas.length; i++) {
				operator_selectObj.options.add(new Option(operator_datas[i],
														  operator_datas[i]));
			}
			
		}
			
	}

 

点解添加按钮后调用:

function newExchangeRate(cell){
		 clearReqMsg(cell);
		var table = document.getElementById('tab_exchangeRate');
		var newRow = table.insertRow(-1);
		var td0 =newRow.insertCell(0); 
		td0.innerHTML = '<select id="select_cardTypeGroupId" name="cardTypeGroupId" style="width: 100px;" onfocus="selectOptions()" >'
		+'<option value="">-- select --</option>'
		+'</select>';	
		
		var td1 =newRow.insertCell(1); 
		td1.innerHTML = '<select id="select_denominationId" name="denominationId" style="width: 100px;" onfocus="selectOptions()" >'
		+'<option value="">-- select --</option>'
		+'</select>';
		var td2 =newRow.insertCell(2); 
		td2.innerHTML = '<select id="select_operatorId" name="operatorId" style="width: 100px;" onfocus="selectOptions()" >'
		+'<option value="">-- select --</option>'
		+'</select>';
		var td3 =newRow.insertCell(3);
		td3.innerHTML = '<input type="text" name="exchangePriceHkd" style="width: 60px;">';
		var td4 =newRow.insertCell(4);
		td4.innerHTML = '<input type="button" value="Add" onclick="exchangeRateAction(this)"> '
		+'<input type="button" value="Delete" onclick="deleteNew(this)">';
	}

 

点击ADD后:

function exchangeRateAction(cell){
		var url = "admin";
		var action = "adminAction=exchangeRate"+cell.value;
		var formname = "exchangeRateForm";
		
		console.log("cell value : " + cell.value);
		if(cell.value.toUpperCase()=="DELETE"){
			action += "&cardTypeGroupId="+getRow(cell).cells[0].innerHTML;
			action += "&denominationId="+getRow(cell).cells[1].innerHTML;
			action += "&operatorId="+getRow(cell).cells[2].innerHTML;
		}else{
			var row=getRow(cell);
			var cellsLength = getTable(cell).rows.item(0).cells.length;
			for(var i=0;i<cellsLength-1;i++){
				action+="&"+row.cells[i].childNodes[0].name+"="+row.cells[i].childNodes[0].value;
			}
		}
		
		if(window.confirm('Confirm to '+ cell.value+' ?')){
			xmlhttpPost(cell,url,action);
		 }else{
		    return false;
		}
	}

 

注:

row.cells[i].childNodes[0].name : 获得select标签的name属性值
row.cells[i].childNodes[0].value : 获得select标签的value属性值

 

补充:

function getRowIndex(cell) {
	return cell.parentNode.parentNode.rowIndex;
}

function getTableId(cell) {
	return tableId = cell.parentNode.parentNode.parentNode.parentNode.id;
}

function getTable(cell) {
	return document.getElementById(getTableId(cell));
}

function getRow(cell) {
	//alert(getTable(cell).rows[getRowIndex(cell)].innerHTML);
	return getTable(cell).rows[getRowIndex(cell)];
}

 

 

额外学习:

获得select所选项:

var cardTypeGroup_index = cardTypeGroup_selectObj.selectedIndex;
var cardTypeGroupId_select_val = cardTypeGroup_selectObj.options[cardTypeGroup_index].value;

 

补充2:

获得当前已经选定值:

1.获得jsp表格中的值:

serviceSel = editRow.cells[3].innerHTML;

2.

function service_selectOption(){
		var objSelect = document.getElementById("select_service");
		var meta = "local,all,international";
		var datas = meta.split(",");
		if(objSelect.options.length == 1){
			objSelect.options.remove(0);
			for (var i = 0; i < datas.length; i++) {
				objSelect.options.add(new Option(datas[i],datas[i]));
				 if (objSelect.options[i].value == cardTypeGroupNameSel) {
					objSelect.options[i].selected = true;  //设为默认
				}  
			}
		}
	}

 

分享到:
评论

相关推荐

    vue+layui实现select动态加载后台数据的例子

    ### 数据动态加载 动态加载数据是Web开发中的常见需求,尤其是在单页应用中,经常需要与后端API进行交互,获取数据后动态更新页面内容。在Vue.js中,通常使用`axios`这个HTTP库来发送请求并处理响应数据。 ### ...

    SSH2中select下拉框的用法

    在SSH2(Spring、Struts2、...通过这种方式,SSH2框架可以根据后端数据库动态生成`select`下拉框的选项,使得用户能够在网页上方便地进行选择操作。同时,`rf.sql`文件确保了数据库中的数据准备就绪,便于演示和测试。

    Freemarker通用select下拉框

    例如,可以有一个`getDropdownList(String entityType)`方法,根据传入的实体类型返回对应的下拉框数据。 单元测试在这个过程中扮演了重要角色,确保不论输入什么样的参数,`getDropdownList`都能正确地构建出...

    bootstrap select树形下拉框

    6. **数据动态加载**:如果选项数据是从服务器动态获取的,可以使用Ajax请求加载数据,并在数据返回后动态构建`&lt;option&gt;`元素,再调用`selectpicker('refresh')`方法更新下拉框。 7. **无障碍访问(Accessibility)...

    select2 搜索下拉框插件

    3. **远程数据集**:对于需要从服务器动态加载数据的情况,select2 支持异步数据源,可以实时从服务器获取数据并显示在下拉框中。这使得用户无需预先加载所有数据,降低了页面载入时间,提高了用户体验。 4. **无限...

    js select美化下拉框美化

    在实际项目中,可能会结合Java和JSP来处理服务器端的数据,将这些数据传递给前端,用于生成下拉框的选项。例如,使用JSP的EL(Expression Language)和JSTL标签库来动态生成HTML代码。 总的来说,"js select美化...

    下拉框带模糊查询引入select2组件.zip

    标签"java js 下拉框"表明了这个话题涉及到的技术栈,其中"java"可能是用来处理后端数据的,而"js"则表示前端使用JavaScript进行交互逻辑处理,"下拉框"则是我们要讨论的核心元素。 在压缩包的文件名列表中,我们...

    select项内容过长解决办法

    6. **动态加载**:对于非常长的选项列表,可以考虑使用懒加载,只在用户滚动到可视区域时加载部分选项,以提高页面性能。 7. **分组选项**:使用`&lt;optgroup&gt;`标签将相关的选项分组,可以减少单个选项的长度,使得...

    AJAXA例子--动态加载下拉框

    这可能意味着我们将看到具体的代码片段或步骤,展示如何在用户交互时,如点击、输入等事件触发下,通过AJAX请求获取数据,并将这些数据动态地填充到下拉框中。 **标签解析:** - **ajax**:这个标签提示我们,解决...

    jQuery实现动态加载select下拉列表项功能示例

    本文通过一个使用jQuery实现的示例,详细讲解了如何动态加载select元素中的下拉列表项,从而允许根据不同的业务场景或用户交互来加载不同的数据项。 ### 知识点一:静态与动态下拉列表的区别 在传统的Web页面设计...

    Layui带搜索的下拉框的使用以及动态数据绑定方法

    之后,在POST请求的回调函数中,将查询到的数据动态地拼接到下拉框中。 在拼接数据之前,需要添加一个value值为空的选项,这是为了预留一个默认的请选择选项,以便用户可以选择默认值,而不是默认选中第一个拼接的...

    bootstrap里bootstrap动态加载下拉框的实例讲解

    总结来说,这个实例展示了如何利用Bootstrap和其扩展库`bootstrap-select.js`动态加载下拉框数据。通过AJAX请求获取远程数据,然后使用jQuery操作DOM来构建下拉框选项,最后通过插件提供的方法更新下拉框,实现动态...

    下拉框(select),可以多选,带有分组搜索功能

    6. **性能优化**:对于大数据量的下拉框,为了避免一次性加载所有选项导致页面卡顿,可以采用懒加载策略,只在用户滚动到可视区域时加载相应的选项。 7. **兼容性和适配**:确保组件在各种主流浏览器上表现一致,并...

    select下拉列表显示图片内容

    然后在JavaScript中解析这些数据,动态创建包含图片的DOM元素。 4. **jQuery实现**: 描述中的`$("#***").select()`可能是引用了jQuery的`select`方法,但这在jQuery中并不存在。可能是指使用jQuery来操作`select`...

    下拉框值触发另一个下拉框

    例如,当用户在第一个下拉框中做出选择时,我们可以发送一个AJAX请求到服务器,获取与之相关的第二个下拉框的选项数据,然后动态渲染到页面上: ```javascript fetch('api/relatedOptions?selectedValue=' + this....

    下拉框、下拉控件之Select2内含css和js

    3. **自定义数据源**:你可以通过 AJAX 或 JavaScript 数组为 `Select2` 提供动态数据,使得选项不再局限于静态的 HTML 内容。 4. **可扩展性**:`Select2` 的API允许开发者添加自定义行为,如监听事件、修改默认...

    前端web select 多层级选择。利用 ztree.js 实现下拉框的多选和单选demo.有兴趣的可以了解一下。

    在实际应用中,这些数据通常是从服务器动态获取的,通过 AJAX 请求加载到页面上。 接下来,我们需要设置 zTree 的配置项。其中,`check` 参数用于控制多选和单选功能,如 `check.enable` 设为 `true` 可开启多选,`...

    jQGrid动态填充select下拉框的选项值(动态填充)

    在某些场景下,我们需要动态地填充表格中的 select 下拉框选项,以实现更灵活的数据展示和交互。本篇文章将详细介绍如何在 jQGrid 中动态填充 select 下拉框的选项值。 首先,让我们理解一下 jQGrid 的基本结构。...

Global site tag (gtag.js) - Google Analytics