jsp中省市区级联问题

J2EE 码拜 9年前 (2015-05-11) 914次浏览 0个评论

<select class=”sele” id=”selProvince” name=”patient.Province” onchange=”loadCity(this, selCity, selArea)”>
                       <option selected=”selected”>请选择</option>
                       <script type=”text/javascript”> loadProvince(); </script>
                      </select> 省
                      &nbsp;&nbsp;&nbsp;
                      <select class=”sele” id=”selCity” name=”patient.City” disabled=”disabled” onchange=”loadArea(selProvince, this, selArea)”></select>市
                      &nbsp;&nbsp;&nbsp;
                      <select class=”sele” id=”selArea” name=”patient.County” disabled=”disabled”></select> 区(县)

有一个JS文件写的都是那些省市区。现在点击省份的时候就会触发Onchange事件调用那个JS中的方法。但是问题就是我要修改该页面信息,可能一进来页面,就会已经填写了地址。但是市和区都是通过点击改变省触发onchange事件之后才会出来的,现在就不能正常显示了。

1分
进入页面直接把那个select赋值就可以了。会自动选好的
5分
如果是数据库的话 做一个ajax。不是的话在js脚本里写个 setInterval(function(){},1000) 获取值赋值··很简单啊
引用 1 楼 huxiweng 的回复:

进入页面直接把那个select赋值就可以了。会自动选好的

只会赋给省,但是市和区需要点击才会触发。

引用 2 楼 u010016988 的回复:

如果是数据库的话 做一个ajax。不是的话在js脚本里写个 setInterval(function(){},1000) 获取值赋值··很简单啊

$(“#selProvince option”).each(function(){
 if($(this).val() == $(“#prov”).val()){
 $(this).attr(“selected”,”selected”);
 }
});
这样只会给省复制选中。
$(“#selCity option”).each(function(){

alert($(this).val());
 if($(this).val() == $(“#cit”).val())
$(this).attr(“selected”,”selected”);
});
下面的方法进不去

1分
如果要设默认值的话3个下拉菜单都要设撒。要么都不设。
引用 5 楼 jiang991812 的回复:

如果要设默认值的话3个下拉菜单都要设撒。要么都不设。

我就设置一个啊

不明白哎  是不是 累世 一出来就是  黑龙江省 哈尔滨市 道里区 这样子的??
引用 7 楼 u010016988 的回复:

不明白哎  是不是 累世 一出来就是  黑龙江省 哈尔滨市 道里区 这样子的??

是的

谁有纯JS写的所有省市区3个的级联。。发个给我谢谢。
3分
引用 9 楼 mengxiangzr 的回复:

谁有纯JS写的所有省市区3个的级联。。发个给我谢谢。

这个不就是逻辑判断吗?没什么东西,写出来就是一堆定义。。当年写过一个,写了几千行。

拒绝··那是码农干的活
引用 11 楼 u010016988 的回复:

拒绝··那是码农干的活

哟 你狠牛嘛?

10分
引用 9 楼 mengxiangzr 的回复:

谁有纯JS写的所有省市区3个的级联。。发个给我谢谢。

JS的话怎么和服务器通信呢?肯定用到Ajax或者Html5中的WebSocket吧

发一个我以前写的例子吧,二级联动的。三级连动原理一样的。不会引用一下问

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
	<!-- 
		北京bj
			东城
			西城
    		崇文
		天津
            和平
            河东
            河西
	 -->
	<select id="city">
		<option value="bj">北京</option>
		<option value="tj">天津</option>
	</select >
	<select id="country"></select>

	<script type="text/javascript">
		var city = document.getElementById("city");
		city.onchange = function() {
			//document.getElementById("city").value;
			var value = this.value;
			var xhr;
			if(window.XMLHttpRequest) {
				xhr = new XMLHttpRequest();
			}else if(window.ActiveXObject) {
				xhr = new ActiveXObject(
						"Microsoft.XMLHttp"
					);
			}
			xhr.onreadystatechange = function() {
				if(xhr.readyState == 4) {
					if(xhr.status == 200){
						//xxx-xxx-xx
						var content = xhr.responseText;
						var countrys = content.split("-");
						var c = document.getElementById("country");
						var children = c.childNodes;
						while(c.hasChildNodes()) {
							c.removeChild(children[0]);
						}
						for(var i=0;i<countrys.length;i++) {
							//alert("xxx");
							var option = document.createElement("option");
							option.innerHTML = countrys[i];

							c.appendChild(option);
						}
					}
				}
			}
			xhr.open("GET","cityServlet?city=" + value,true);
			xhr.send(null);
		}
	</script>
</body>
</html>

服务端:

	protected void doPost(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {
		Map<String, List<String>> citys = new HashMap<String, List<String>>();
		List<String> bList = new ArrayList<String>();
		bList.add("东城");
		bList.add("西城");
		bList.add("崇文");
		citys.put("bj", bList);
		List<String> tList = new ArrayList<String>();
		tList.add("和平");
		tList.add("河东");
		tList.add("河西");
		citys.put("tj", tList);
		request.setCharacterEncoding("UTF-8");
		String city = request.getParameter("city");
		List<String> list = citys.get(city);
		String result = "";
		for(String s : list) {
			result += s + "-"; ///////
		}
		response.setCharacterEncoding("UTF-8");
		response.setContentType("text/plain");
		PrintWriter writer = response.getWriter();
		writer.print(result);
	}
有现成的,何必再造车。
下班了··懒得写啊
这东西,,网上一大堆吧,,,不出钱的东西要人家帮你写,,我只能说,,这社会好“雷锋”少!
5分
 说下:  select ajax 在ajax中动态添加select 的 option吧,触发用onchange事件
5分
select下拉列表包含两种动作:
1.初始化操作
2.点击改变操作
你现在实现了第2步操作,第一步的操作需要你在初始化js的时候通过遍历下拉列表进行选择。
可以参考一下:http://blog.csdn.net/zhanglujie2008/article/details/8759235

5分
有点无语,LZ的意思是,人家三级联动已经写好了,一个表的增删改查,在修改的时候,修改页面的数据赋值了,但是因为是联动,如果不按照顺序来点击的话市、县的数据没有联动,这样就会得不到想要的结果。

LZ可以尝试下主动加载你的联动数据的思路来实现。

引用 13 楼 AA5279AA 的回复:
Quote: 引用 9 楼 mengxiangzr 的回复:

谁有纯JS写的所有省市区3个的级联。。发个给我谢谢。

纯JS的话怎么和服务器通信呢?肯定用到Ajax或者Html5中的WebSocket吧

发一个我以前写的例子吧,二级联动的。三级连动原理一样的。不会引用一下问

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
	<!-- 
		北京bj
			东城
			西城
    		崇文
		天津
            和平
            河东
            河西
	 -->
	<select id="city">
		<option value="bj">北京</option>
		<option value="tj">天津</option>
	</select >
	<select id="country"></select>

	<script type="text/javascript">
		var city = document.getElementById("city");
		city.onchange = function() {
			//document.getElementById("city").value;
			var value = this.value;
			var xhr;
			if(window.XMLHttpRequest) {
				xhr = new XMLHttpRequest();
			}else if(window.ActiveXObject) {
				xhr = new ActiveXObject(
						"Microsoft.XMLHttp"
					);
			}
			xhr.onreadystatechange = function() {
				if(xhr.readyState == 4) {
					if(xhr.status == 200){
						//xxx-xxx-xx
						var content = xhr.responseText;
						var countrys = content.split("-");
						var c = document.getElementById("country");
						var children = c.childNodes;
						while(c.hasChildNodes()) {
							c.removeChild(children[0]);
						}
						for(var i=0;i<countrys.length;i++) {
							//alert("xxx");
							var option = document.createElement("option");
							option.innerHTML = countrys[i];

							c.appendChild(option);
						}
					}
				}
			}
			xhr.open("GET","cityServlet?city=" + value,true);
			xhr.send(null);
		}
	</script>
</body>
</html>

服务端:

	protected void doPost(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {
		Map<String, List<String>> citys = new HashMap<String, List<String>>();
		List<String> bList = new ArrayList<String>();
		bList.add("东城");
		bList.add("西城");
		bList.add("崇文");
		citys.put("bj", bList);
		List<String> tList = new ArrayList<String>();
		tList.add("和平");
		tList.add("河东");
		tList.add("河西");
		citys.put("tj", tList);
		request.setCharacterEncoding("UTF-8");
		String city = request.getParameter("city");
		List<String> list = citys.get(city);
		String result = "";
		for(String s : list) {
			result += s + "-"; ///////
		}
		response.setCharacterEncoding("UTF-8");
		response.setContentType("text/plain");
		PrintWriter writer = response.getWriter();
		writer.print(result);
	}

谢谢你 我看看

引用 19 楼 lvbang_lzt 的回复:

有点无语,LZ的意思是,人家三级联动已经写好了,一个表的增删改查,在修改的时候,修改页面的数据赋值了,但是因为是联动,如果不按照顺序来点击的话市、县的数据没有联动,这样就会得不到想要的结果。

LZ可以尝试下主动加载你的联动数据的思路来实现。

是的,我就是这个意思,不过现在解决了 呵呵

引用 16 楼 wenjie4892543 的回复:

这东西,,网上一大堆吧,,,不出钱的东西要人家帮你写,,我只能说,,这社会好“雷锋”少!

我没有别人帮我写OK?

5分
引用 21 楼 mengxiangzr 的回复:
Quote: 引用 19 楼 lvbang_lzt 的回复:

有点无语,LZ的意思是,人家三级联动已经写好了,一个表的增删改查,在修改的时候,修改页面的数据赋值了,但是因为是联动,如果不按照顺序来点击的话市、县的数据没有联动,这样就会得不到想要的结果。

LZ可以尝试下主动加载你的联动数据的思路来实现。

是的,我就是这个意思,不过现在解决了 呵呵

修改的话,直接拿着你的省去查市然后随着修改页面一起显示。

toggle()事件

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明jsp中省市区级联问题
喜欢 (0)
[1034331897@qq.com]
分享 (0)

文章评论已关闭!