`

jquery---联动菜单

阅读更多

1、Action层代码 (dao,Service略 直接虚拟数据)

 

package cn.hz.lly.action;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.http.HttpServletResponse;
import net.sf.json.JSONArray;
import org.apache.struts2.ServletActionContext;
import cn.hz.lly.vo.ProCityCon;
import com.opensymphony.xwork2.ActionSupport;
public class ProAction extends ActionSupport {
 private static final long serialVersionUID = -7361997732488681602L;
 private String id;
 public String listProvince() throws Exception{
  HttpServletResponse response = ServletActionContext.getResponse();
  response.setContentType("text/html;charset=utf-8");
  PrintWriter out = response.getWriter();
  //查询数据
  List<ProCityCon> list = new ArrayList<ProCityCon>();
  ProCityCon pro0 = new ProCityCon();
  pro0.setId("1");
  pro0.setName("山西");
  ProCityCon pro1 = new ProCityCon();
  pro1.setId("2");
  pro1.setName("陕西");
  ProCityCon pro2 = new ProCityCon();
  pro2.setId("3");
  pro2.setName("宁夏");
  list.add(pro0);
  list.add(pro1);
  list.add(pro2);
  JSONArray jsoArray = JSONArray.fromObject(list);
  out.print(jsoArray.toString());
  return null;
 }
 public String listCity() throws Exception{
  HttpServletResponse response = ServletActionContext.getResponse();
  response.setContentType("text/html;charset=utf-8");
  PrintWriter out = response.getWriter();
  //查询数据
  List<ProCityCon> list = new ArrayList<ProCityCon>();
  ProCityCon pro0 = new ProCityCon();
  ProCityCon pro1 = new ProCityCon();
  ProCityCon pro2 = new ProCityCon();
  ProCityCon pro3 = new ProCityCon();
  if("1".equals(id)){
   pro0.setId("1");
   pro0.setName("太原");
   pro1.setId("2");
   pro1.setName("大同");
   pro2.setId("3");
   pro2.setName("吕梁");
  }else if("2".equals(id)){
   pro0.setId("4");
   pro0.setName("西安");
   pro1.setId("5");
   pro1.setName("咸阳");
   pro2.setId("6");
   pro2.setName("宝鸡");
   pro3.setId("7");
   pro3.setName("渭南");
   
  }else if("3".equals(id)){
   pro0.setId("8");
   pro0.setName("银川");
   pro1.setId("9");
   pro1.setName("大武口");
  }else{
   return null;
  }
  list.add(pro0);
  list.add(pro1);
  list.add(pro2);
  JSONArray jsoArray = JSONArray.fromObject(list);
  System.out.println(jsoArray.toString());
  out.print(jsoArray.toString());
  return null;
 }
 public String listCounty() throws Exception{
  HttpServletResponse response = ServletActionContext.getResponse();
  response.setContentType("text/html;charset=utf-8");
  PrintWriter out = response.getWriter();
  //查询数据
  List<ProCityCon> list = new ArrayList<ProCityCon>();
  ProCityCon pro0 = new ProCityCon();
  ProCityCon pro1 = new ProCityCon();
  if("1".equals(id)){
    pro0.setId("1");
    pro0.setName("太原市");
    pro1.setId("2");
    pro1.setName("太原辖区");
  }else if("2".equals(id)){
   pro0.setId("1");
   pro0.setName("大同市");
   pro1.setId("2");
   pro1.setName("大同辖区");
  }else if("3".equals(id)){
   pro0.setId("1");
   pro0.setName("吕梁市");
   pro1.setId("2");
   pro1.setName("吕梁辖区");
  }else if("4".equals(id)){
   pro0.setId("1");
   pro0.setName("西安市");
   pro1.setId("2");
   pro1.setName("西安辖区");
  }else if("5".equals(id)){
   pro0.setId("1");
   pro0.setName("咸阳市");
   pro1.setId("2");
   pro1.setName("咸阳辖区");
  }else if("6".equals(id)){
   pro0.setId("1");
   pro0.setName("宝鸡市");
   pro1.setId("2");
   pro1.setName("宝鸡辖区");
  }else if("7".equals(id)){
   pro0.setId("1");
   pro0.setName("渭南市");
   pro1.setId("2");
   pro1.setName("渭南辖区");
  }else if("8".equals(id)){
   pro0.setId("1");
   pro0.setName("金凤区");
   pro1.setId("2");
   pro1.setName("西夏区");
  }else if("9".equals(id)){
   pro0.setId("1");
   pro0.setName("大武口市");
   pro1.setId("2");
   pro1.setName("惠农区");
  }
  else{
   return null;
  }
  list.add(pro0);
  list.add(pro1);
  JSONArray jsoArray = JSONArray.fromObject(list);
  System.out.println(jsoArray.toString());
  out.print(jsoArray.toString());
  return null;
 }
 public String getId() {
  return id;
 }
 public void setId(String id) {
  this.id = id;
 }
}

 

 

2、jsp 代码

<%@ page language="java" contentType="text/html; charset=UTF-8" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "
http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
<html xmlns="
http://www.w3.org/1999/xhtml" lang="zh-CN" xml:lang="zh-CN">
<head>
<title>jquery菜单联动</title>
<script language="javaScript" src="script/jquery-1.5.1.js"></script>
<script language="javaScript">
$(document).ready(function(){
$.post("listProvince",function(data,textStatus){
 var dataObject = eval("("+data+")");
 for(var i = 0; i<dataObject.length;i++){
 var id = dataObject[i].id;
 var name = dataObject[i].name;
 $option = $("<option/>");
 $option.attr("value",id);
 $option.text(name);
 $("#province").append($option);
 } 
}); 
$("#province").change(function(){
 $("#city").attr("length",1);
 $("#county").attr("length",1);
 var pid = this.value;
 $.post("listCity",{"id":pid},function(data,textStatus){
 var dataObject = eval("("+data+")");
 for(var i = 0; i<dataObject.length;i++){
 var id = dataObject[i].id;
 var name = dataObject[i].name;
 $option = $("<option/>");
 $option.attr("value",id);
 $option.text(name);
 $("#city").append($option);
 } 
 });
});
$("#city").change(function(){
 var pid = this.value;
 $.post("listCounty",{"id":pid},function(data,textStatus){
 var dataObject = eval("("+data+")");
 for(var i = 0; i<dataObject.length;i++){
 var id = dataObject[i].id;
 var name = dataObject[i].name;
 $option = $("<option/>");
 $option.attr("value",id);
 $option.text(name);
 $("#county").append($option);
 } 
 });
});
}
);
</script>
</head>
<body>
<div>
<s:fielderror>
</s:fielderror>
</div>
<select id="province" name="province">
<option value="">-请选择...-</option>
</select>
<select id="city" name="city">
<option value="">-请选择...-</option>
</select>
<select id="county" name="county">
<option value="">-请选择...-</option>
</select>
</body>
</html>

 

说明 :

1、在Action中直接返回页面json格式数据 ,使用jar net.sf.json.JSONArray

pom 中引入次jar后 maven会自动导入其他依赖jar文件

<dependency>
  <groupId>net.sf.json-lib</groupId>
  <artifactId>json-lib</artifactId>
  <version>2.4</version>
  <classifier>jdk15</classifier>
</dependency>

2、Action直接将List对象转换成json格式返回

JSONArray jsoArray = JSONArray.fromObject(list);

  out.print(jsoArray.toString());

3、页面使用jquery实现ajax调用功能

方法:

$.post("listCity",{"id":pid},function(data,textStatus){

......

}

4、jquery追加至页面

$option = $("<option/>");                   //创建option 对象
 $option.attr("value",id);                     //设置属性值
 $option.text(name);                           //设置属性值 使用text() 追加文本方式
 $("#county").append($option);          //将设置好的option对象追加至id='count' 的下拉框下

5、清除已有的下拉框(保留第一个节点)

$("#city").attr("length",1);

或者使用    $("#city" option[value!='']).remove();     //批量删除已有的value不是' '的下拉选项

 

 

 

分享到:
评论

相关推荐

    jQuery三级地区联动选择菜单jquery-1.9.1.js制作,省市区三级联动选择菜单,适合手机WAP网站使用.zip

    "jQuery三级地区联动选择菜单jquery-1.9.1.js制作"就是解决此类问题的一个优秀方案。这个项目使用了著名的JavaScript库jQuery,版本为1.9.1,来实现这种功能,确保了良好的浏览器兼容性和执行效率。 jQuery是一个轻...

    jquery-easyui-1.3.2 demo

    在demo中,你可以了解到如何设置默认值、限制选择范围,以及如何与其他组件联动。 4. **Dialog**:对话框组件用于弹出窗口,常用于表单提交、信息提示等场景。示例展示了如何打开、关闭、设置大小、位置以及添加...

    jquery-easyui-1.3.1.rar

    - 数据绑定:利用 JSON 或 AJAX 动态加载数据到组件中,实现数据与视图的联动。 - 事件监听:通过绑定特定的事件处理器,实现用户交互的响应。 6. **自定义与扩展** - 自定义主题:EasyUI 允许开发者通过 CSS ...

    jQuery-searchableSelect带搜索功能的下拉选

    《jQuery-searchableSelect:打造高效带搜索功能的下拉选择器》 在Web开发中,下拉选择框(Select)是常见的用户输入组件,但原生的HTML `&lt;select&gt;` 元素往往功能有限,特别是在大型数据集或需要提供搜索功能的情况...

    jquery cxselect联动插件select多级联动下拉菜单

    jquery cxselect联动插件select多级联动下拉菜单 jquery cxselect联动插件select多级联动下拉菜单 jquery cxselect联动插件select多级联动下拉菜单 jquery cxselect联动插件select多级联动下拉菜单

    jQuery cxSelect 多级联动下拉菜单

    cxSelect 是基于 jQuery 的多级联动菜单插件,适用于省市、商品分类等联动菜单。 列表数据通过 AJAX 获取(需要在服务器环境运行),也可以使用变量自定义,数据内容使用 JSON 格式。

    jquery-FillOptions级联菜单

    jQuery FillOptions 是一个用于创建多级联动菜单的插件,它能够帮助开发者快速实现下拉菜单之间的级联效果,为用户界面提供更加交互性和动态的选择体验。在网页设计中,这种级联菜单通常用于地区选择、类别导航或者...

    jQuery-Citys省市区三级菜单联动插件使用详解

    jQuery-Citys是一个基于jQuery的省市区三级菜单联动插件,主要用于实现国内行政区划的选择功能。在详细介绍其使用方法之前,我们首先需要了解一些基本概念和数据结构。 1. 国家行政区划代码:中国行政区划代码是...

    jqcool.net-jquery-foonav.zip

    在这个案例中,"foonav" 很可能是一个定制的 jQuery 插件或脚本,用于实现菜单与页面内容的联动功能。 描述中的 "根据菜单定位到页面响应的内容,相反滚动页面对应菜单选中效果" 表明这个插件或脚本具有以下关键...

    jquery-easyui-1.3.5 文件

    6. **Form(表单)**:处理用户输入,支持验证、联动、异步提交等功能。 7. **Tree(树形结构)**:展现层次结构的数据,支持展开/折叠、节点操作等。 **四、jQuery EasyUI 1.3.5 版本更新** 在 1.3.5 版本中,可能...

    jQuery-实现三级联动效果(省市县)

    在网页开发中,"jQuery-实现三级联动效果(省市县)"是一个常见的需求,尤其在构建具有地域选择功能的网站时。这个项目主要是利用jQuery库来实现一个动态的、无刷新的省市县选择器,提高了用户体验,使得用户在选择...

    jquery-easyui-1.3.2

    3. 下拉菜单(Combobox):提供了联动下拉、远程加载数据等高级用法,帮助开发者实现复杂的输入控制。 4. 树形控件(Tree):包括基本的树结构展示,以及节点展开、收缩、异步加载等操作。 5. 表单验证(Form ...

    jquery-easyui-1.5.7z

    - jQuery EasyUI 是基于 jQuery 的轻量级框架,它提供了大量的UI组件,如表格、表单、窗口、菜单、对话框等。 - EasyUI 的目标是通过简单的HTML标记和JavaScript API,帮助开发者快速创建功能丰富的Web应用程序。 ...

    JQuery--省市区的选择

    7. **插件使用**:jQuery社区有许多插件,如Select2,可以优化下拉菜单的样式和功能,使选择更加友好。如果需要更高级的功能,可以考虑引入这些插件。 在实现过程中,我们需要确保代码的可维护性和性能优化。例如,...

    jquery-无限级联菜单

    jquery_无限级联菜单,无需ajax,纯json数据调用 简单的调用方式 $.getScript("toregion.js",function(){ var ops = { tree_json:regionConf,//json字符串 tree_json_name:"regionConf",//json字符串变量名称 ...

    jquery-ajax-app-src

    最后,"Ajax_典型应用_2级联动__城市到部门的 Ajax 实现"涉及到动态下拉菜单的联动。在选择一个城市后,根据所选城市动态加载对应的部门列表。这种联动效果可以通过监听城市选择框的`change`事件,触发Ajax请求,...

    jquery-世界级三级联动demo.rar

    通过以上步骤,我们可以构建一个完整的基于jQuery的三级联动下拉菜单。这个“世界级三级联动demo”应该包含完整的HTML、CSS和JavaScript代码,演示了如何将这些概念应用到实际项目中。对于初学者来说,这是一个很好...

    jquery-easyui-1.3.3-api.rar

    开发者可以通过API控制其显示选项、联动其他控件等。 3. **Dialog**:Dialog组件用于创建弹出式窗口,可用于显示信息、用户交互等。API提供了设置对话框大小、位置、按钮、关闭行为等方法。 4. **Menu**:Menu组件...

    jquery实现多级联动菜单

    本教程将深入探讨如何使用jQuery来创建一个响应式的多级联动菜单。 首先,我们需要理解联动菜单的基本原理。联动菜单通常由多个级别组成,每个级别中的选项根据上一级的选择动态改变。例如,一级菜单可能包含“产品...

    jquerycasecader一个jquery级联下拉组件

    `jQuery Casecader` 是一个用于构建级联下拉菜单的插件,适用于那些需要多级选择或者联动效果的Web应用。在JavaScript开发中,特别是在前端交互设计中,这种组件非常常见,能够帮助用户通过下拉选项来筛选和导航数据...

Global site tag (gtag.js) - Google Analytics