|
|
详细介绍看这里
http://blog.csdn.net/lee576/archive/2008/11/24/3362512.aspx
html中的2个普通select
<select id="province"></select> <select id="city"></select>
先倒入2个插件:
<script language="javascript" type="text/javascript" src="js/jQuery.FillOptions.js"></script>
<script language="javascript" type="text/javascript" src="js/jQuery.CascadingSelect.js"></script>
$("#province").FillOptions( "flexGridServlet.do?action=getProvince", { datatype:"json", textfield:"province", valuefiled:"provinceID", //selectedindex:0,//填充并选中第1项 keepold:true//填充并且保留原有项 });$("#province").AddOption("请选择省份:","-1",true,0);//最上端插入一个文本为“请选择省份“,值为”-1“的列表项,并且是选中状态$("#city").AddOption("请选择城市:","-1",true,0);$("#province").CascadingSelect( $("#city"),//需要联动的下拉列表框,必须 "flexGridServlet.do?action=getCity", {datatype:"json",textfield:"city",valuefiled:"cityID",parameter:"p"},//通过设置parameter:”p”这个参数会生成一个"handler1.ashx?p=xxx”这样的地址来做ajax请求 function(){//完成联动后执行 //log.info("测试"); });
java代码处理2个请求
if("getProvince".equals(action)){System.out.println("--------------------getProvince--------------------");//String json="[{'provinceID':'110000','province':'北京市'}," +//"{'provinceID':'120000','province':'天津市'}," +//"{'provinceID':'310000','province':'上海市'}" +//"]";String path=this.getServletContext().getRealPath("/")+"province.txt";//这个文件中的内容就是上面注释掉的jsonBufferedReader br=new BufferedReader(new InputStreamReader(new FileInputStream(path),"UTF-8")); StringBuffer sb=new StringBuffer(); String s; while((s=br.readLine())!=null){ sb.append(s); } br.close(); String json=sb.toString(); System.out.println("json="+json); /*xml测试 String xml="<DocumentElement>" + "<table><provinceID>110000</provinceID><province>北京市</province></table>" + "<table><provinceID>120000</provinceID><province>天津市</province></table>" + "<table><provinceID>310000</provinceID><province>上海市</province></table>" + "</DocumentElement>"; response.getWriter().write(xml); */ /*非文件测试 JSONArray array=new JSONArray();try {for(int i=0;i<5;i++){JSONObject object = new JSONObject();object.append("provinceID", "11000"+i);object.append("province", "北京市"+i);array.put(object);}} catch (JSONException e) {e.printStackTrace();}System.out.println("object="+array.toString());response.getWriter().write(array.toString());*/response.getWriter().write(json);response.getWriter().flush();response.getWriter().close();return;}if("getCity".equals(action)){System.out.println("--------------------getCity--------------------");String json="";String provinceID=request.getParameter("p");System.out.println("provinceID="+provinceID);if(provinceID.equals("110000")){json="[{'cityID':'1','city':'北京'}]";}else if(provinceID.equals("120000")){json="[{'cityID':'2','city':'天津'}]";}else if(provinceID.equals("310000")){json="[{'cityID':'3','city':'上海'}]";}else if(provinceID.equals("130000")){json="[{'cityID':'4','city':'石家庄'}," +"{'cityID':'5','city':'石家庄2'}"+"]";}else{json="[]";}System.out.println("object="+json);response.getWriter().write(json);response.getWriter().flush();response.getWriter().close();return;}
添加一个列表项的插件AddOption(已整合进FillOptions),这个比较简单,用来向下拉列表框中添加一个列表项。
定义如下:
AddOption (text,value,selected,index)
参数说明:
text:文本型,列表项文本
value:文本型,列表项值
selected:布尔型,是否选择加入的列表项
index:数值型,加入位置
实例如下:
$("#select2").AddOption("请选择城市","-1",true,0);
实例说明:
向select2最上端插入一个文本为“请选择城市”,值为”-1“的列表项,并且是选中状态
/////////////////////////////
在FillOptions()下增加
/*解决ie浏览器的刷新 selected的不起作用
http://support.microsoft.com/kb/185123/zh-cn */
if($.browser.msie &&
selected) {
$('option[value='+selected+']',this).attr('selected',true);
} |
|