提到这样一个需求“在新闻表中添加新闻分类的编号和名字”,一般情况下我们将分类的ID放在下拉菜单选项的value中,此时需要获取选项的编号和名字,我们该怎么做呢?我常用的有如下两种方式:
1、自己构造下拉菜单选项的value,比如:
<select name="typeId" id="typeId"> <option value="0">= 请选择 =</option> <option value="3_spring">Spring</option> <option value="2_struts">Struts</option> <option value="1_hibernate">Hibernate</option> </select> |
在Action里面首先获取typeId的值,然后再将其解析成两个值。
2、在页面添加隐藏域,当下拉菜单的发生改变时,将当前选项的名字设置到隐藏域中。
2.1 给页面添加隐藏域
<input type="hidden" name="typeName" value="" id="typeName"/> |
2.2 编写javascript代码
//设置分类名称的值 function setTypeName(){ var type = document.getElementByIdx_x("typeId"); var pindex = type.selectedIndex; // 获取选中的下拉框的值(value) var pValue = type.options[pindex].value; // 获取选中的下拉框的选项(key) var pText = type.options[pindex].text; //alert(pText); //给隐藏域typeName赋值 document.getElementByIdx_x("typeName").value=pText; } |
2.3 给下拉菜单添加事件
<select name=" typeId" id="typeId" onchange="javascript:setTypeName();"> <option value="0">= 请选择 =</option> <option value="3">Spring</option> <option value="2">Struts</option> <option value="1">Hibernate</option> </select> |
2.4 在Action中分别获取typeName、typeId即可。
----------------------------------------------------------- var par =document.getElementByIdx_x('selectID').value; location.href="myjsp.jsp?name=" par; // 或在新窗口打开:open("myjsp.jsp?name=" par,"_blank",""); 假如par是中文,需要在servlet那边转码 String par = request.getParameter("par"); par = new String(par.getBytes("ISO-8859-1"),"GBK"); String str=request.getParameter("下拉框的名字"); |
3、利用jQuery
//获取select各项内容的中的文本内容 var text = $('#typeId option:selected').text(); //获取selecte各项的value var value=$('#typeId option:selected').val();