`

<select>二级联动价格策略+js的eval()

阅读更多

eval()函数,曾经自己并不觉得怎么样,但是项目中遇到一个需求,被迫使用,感觉确实很强大,记下来,忘了了看看!

 

需求: 1)         省内价格可用精确到地市(即,区号),省外价格只精确到省。(产品表中的产品集合将精确到地市,即一万多产品;非本省操作时,将只显示省名称,实际操作地市产品)。

         2)         产品查询:(查询条件)

               a)         地区(省内选择地市,省外选择省份)

               b)         面值

               c)         运营商

综上:1.jsp页面需要一个二级联动<select>,选择省内时查出当前工号对应省份的所有

        城市,例如:省内(黑龙江)-->查出哈尔滨、齐齐哈尔、大庆等。

      2.选择省外,查出T_AREA表中所有的省份,例如:黑龙江、辽宁、河南等。

 

一、ServiceImpl中方法

	/* 查询所有省号、所有省份名称--去掉重复的,此方法hibernate返回一个Object数组,对distinct 封装了
	 * @date 2011-5-21 下午04:31:26
	 */
	@Override
	public List<TArea> getProvinceAndCodeList() {
		String hql = "select distinct t.provinceCode,t.province from TArea t";
		
		List<TArea> list = queryByHql(hql);
		return list;
	}
	
	/* 根据区号,查询当前区号对应省内的所有市 集合
	 * @date 2011-5-21 下午04:57:00
	 */
	@Override
	public List<TArea> getProvinceListByAreaCode(String areaCode) {
		
		String sql = "";
		if(null != areaCode && !"".equals(areaCode)){
			
			sql = "select * from t_area t where t.province_code=" +
					"(select t1.province_code from t_area t1 where t1.area_code='"+areaCode+"')";
		}
		 List<TArea> list = queryBySql(sql);
			return list;
		
	}

 

 

二、struts2的Action两个方法中查询出

      

 

	/**
	 * 获得当前工号省内的所有--选择的省内
	 * @author mengxianjun
	 * @date 2011-5-23 上午09:28:14
	 */
	public void getAllCity() {
		
		try
		{
			String area_code = ConfigCtrl.getConfigValue("area_code");//配置表,获得默认区号
			
			tAreaList = areaService.getProvinceListByAreaCode(area_code);//当前工号所在省的所有市集合
			
			this.getResponse().setCharacterEncoding("UTF-8");
			PrintWriter out = this.getResponse().getWriter();
			JSONArray myjsonObj = JSONArray.fromObject(tAreaList);
			out.println(myjsonObj.toString());
			out.flush();
			out.close();
		}
		catch( Exception e )
		{
			log.error("PriceStrategyAction's method getAllCity ",e);
		}	
	}
	
	/**
	 * 获得所有省--选择的省外
	 * @author mengxianjun
	 * @date 2011-5-23 上午09:28:14
	 */
	public void getAllProvince() {
		
		try
		{
			allProvinceList = areaService.getProvinceAndCodeList();//所有省集合
			
			this.getResponse().setCharacterEncoding("UTF-8");
			PrintWriter out = this.getResponse().getWriter();
			JSONArray myjsonObj = JSONArray.fromObject(allProvinceList);
			out.println(myjsonObj.toString());
			out.flush();
			out.close();
		}
		catch( Exception e )
		{
			log.error("PriceStrategyAction's method getAllProvince ",e);
		}
	}

 

 三、jsp页面给<select>添加onchange事件,对应省内、省外变换<option>

<script type="text/javascript">
	function getAllCityOrProvince()
	{
		if( $("#Area_a").val()=='no' )
		{
			$("#Area_b").empty();//清空列表
			$("<option></option>").val("no").text("    ").appendTo($("#Area_b"));
		}

		/*省内*/
		if( $("#Area_a").val()=='nei' )
		{
			$("#Area_b").empty();//清空列表
			$.post("priceStrategy_getAllCity",'',function(data){
				$.each(eval(data),function(i){
					$("<option></option>").val(eval(data)[i].areaCode).text(eval(data)[i].city).appendTo($("#Area_b"));
				});
			});
		}

		/*省外*/
		if( $("#Area_a").val()=='wai' )
		{
			$("#Area_b").empty();//清空列表
			$.post("priceStrategy_getAllProvince","",function(data){
				//alert(data);
				$.each(eval(data),function(i){
					$("<option></option>").val(eval(eval(data)[i])[0]).text(eval(eval(data)[i])[1]).appendTo($("#Area_b"));
				});

				//第二种方法,纯js循环输出
				//alert(data);
				//alert(eval(data).length);
				/*for( var i=0; i<eval(data).length; i++ )
				{
					var obj1 = eval(eval(data)[i])[0];
					var obj2 = eval(eval(data)[i])[1];
					$("<option></option>").val(obj1).text(obj2).appendTo($("#Area_b"));
				}*/
			});
		}
	}
</script>

 

 

四、jsp页面,表单内容

<s:form id="form1" action="" target="main">
	<table border=1 width="100%">
		<tr>
			<td colspan="3">查询操作</td>
		</tr>
		<tr>
			<td>
				地区:
			</td>
			<td>
				<select id="Area_a" name="Area_a" size="1" onchange="getAllCityOrProvince()">
					<option value="no">==请选择==</option>
					<option value="nei">省内</option>
					<option value="wai">省外</option>
				</select>
				<select id="Area_b" name="Area_b" size="1">
					<option value="no">&nbsp;&nbsp;&nbsp;&nbsp;</option>
				</select>
			</td>
			<td><span id="textArea"></span></td>
		</tr>
		<tr>
			<td>
				面值:
			</td>
			<td>
				<input type="checkbox" id="selectALLMoney" onclick="checkAll(this,'money')"/>全选
				<input type="checkbox" name="money" value="1"/>1 &nbsp;
				<input type="checkbox" name="money" value="3"/>3 &nbsp;
				<input type="checkbox" name="money" value="5"/>5 &nbsp;
				<input type="checkbox" name="money" value="10"/>10 &nbsp;
				<input type="checkbox" name="money" value="20"/>20 &nbsp;
				<input type="checkbox" name="money" value="30"/>30 &nbsp;
				<input type="checkbox" name="money" value="50"/>50 &nbsp;<br>
				<input type="checkbox" name="money" value="100"/>100 &nbsp;
				<input type="checkbox" name="money" value="200"/>200 &nbsp;
				<input type="checkbox" name="money" value="300"/>300 &nbsp;
				<input type="checkbox" name="money" value="500"/>500 &nbsp;
				<input type="checkbox" name="money" value="1000"/>1000 &nbsp;
			</td>
			<td><span id="textMoney"></span></td>
		</tr>
		<tr>
			<td>
				运营商:
			</td>
			<td>
				<select id="operatorsCode" name="operatorsCode" size="1">
					<option value="all">全部</option>
					<option value="40">移动</option>
					<option value="41">联通</option>
					<option value="42">电信</option>
				</select>
			</td>
			<td>&nbsp;</td>
		</tr>
		<tr>
			<td>
				
			</td>
			<td>
				<input type="button" value=" 查询 "  onclick="queryPrice()"/> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
				<input type="button" value=" 重置 " onclick="resetQueryPrice()"/>
			</td>
			<td>&nbsp;</td>
		</tr>
	</table>
	<c:choose>
		<c:when test="${ pageHelper != null }">
			<table border=1 width="100%">
				<tr>
					<td colspan="3">批量操作</td>
				</tr>
				<tr>
					<td>价格:</td>
					<td>
						<input type="radio" id="pricesMarks" name="updateType" value="prices" checked="checked" onclick="pricesMarksOrRatioMarks()"><label for="pricesMarks">价格</label> 
						<input type="radio" id="ratioMarks" name="updateType" value="ratio" onclick="pricesMarksOrRatioMarks()"><label for="ratioMarks">比率 </label>
						
						<input type="text" id="price" name="price">
					</td>
					<td><span id="textPrice"></span></td>
				</tr>
				<tr>
					<td colspan="2">
						<input type="button" id="batchUpdate" value="批量修改" onclick="batchUpdateMethod()">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
						<input type="button" id="allUpdate" value="全部修改" onclick="allUpdateMethod()">
					</td>
					<td><span id="textBatchUpdate"></span></td>
				</tr>
			</table>
			<table border=1 width="100%">
				<tr>
					<td>
						<display:table id="myList" name="pageHelper"  requestURI="priceStrategy_querAllPriceStrategy" sort="list" size="count">
						  <display:column title="<input type='checkbox' id='selectALL' onclick=\"checkAll(this,'checkboxProductTypeNum')\"/\>">
						  		<input type="checkbox" name="checkboxProductTypeNum" value="${ myList.typeNum }"/>
						  		<input type="hidden" name="hiddenTypeNum" value="${ myList.typeNum }"/>
						  </display:column>
						  <display:column property="typeName" title="价格策略名称"/>
						  <display:column property="createDate" title="创建时间" />
						  <display:column title="操作">
						  		<a href="priceStrategy_openUpdatePriceStrategy?typeNum=${ myList.typeNum }" target="main">修改策略</a>||
						  		<a href="priceStrategy_showDetailPriceStrategy?typeNum=${ myList.typeNum }" target="main">查看详情</a>
						  </display:column>
						</display:table>
					</td>
			   </tr>
			</table>
		</c:when>
		<c:otherwise>
		</c:otherwise>
	</c:choose>	
</s:form>

 

分享到:
评论

相关推荐

    C#编程经验技巧宝典

    10&lt;br&gt;&lt;br&gt;0023 如何添加引用第3方控件 11&lt;br&gt;&lt;br&gt;0024 如何生成DLL文件 11&lt;br&gt;&lt;br&gt;0025 如何使用不安全代码 11&lt;br&gt;&lt;br&gt;第2章 语言基础 13&lt;br&gt;&lt;br&gt;2.1 注释 14&lt;br&gt;&lt;br&gt;0026 如何对代码进行注释 14&lt;br&gt;...

    Python中文手册

    基本概念 &lt;br&gt;&lt;br&gt;字面意义上的常量 &lt;br&gt;&lt;br&gt;数 &lt;br&gt;&lt;br&gt;字符串 &lt;br&gt;&lt;br&gt;变量 &lt;br&gt;&lt;br&gt;标识符的命名 &lt;br&gt;&lt;br&gt;数据类型 &lt;br&gt;&lt;br&gt;对象 &lt;br&gt;&lt;br&gt; 输出 &lt;br&gt;&lt;br&gt; 它如何工作 &lt;br&gt;&lt;br&gt;逻辑行与物理行 &lt;br&gt;&lt;br&gt;缩进 &lt;br&gt;...

    新浪推荐浮动广告

    charset=gb2312" /&gt;&lt;br&gt;&lt;title&gt;test&lt;/title&gt;&lt;br&gt;&lt;/head&gt;&lt;br&gt;&lt;body leftmargin="0" topmargin="0" rightmargin="0" bottommargin="0"&gt;&lt;br&gt;&lt;table height=1000&gt;&lt;br&gt;&lt;tr&gt;&lt;td&gt;dddd&lt;/td&gt;&lt;/tr&gt;&lt;br&gt;&lt;/table&gt;&lt;br&gt;&lt;/body&gt;&lt;br...

    LINUX与UNIX_SHELL编程指南2

    176&lt;br&gt;&lt;br&gt;18.4.3 提示键入y或n 177&lt;br&gt;&lt;br&gt;18.4.4 case与命令参数传递 177&lt;br&gt;&lt;br&gt;18.4.5 捕获输入并执行空命令 178&lt;br&gt;&lt;br&gt;18.4.6 缺省变量值 179&lt;br&gt;&lt;br&gt;18.5 for循环 180&lt;br&gt;&lt;br&gt;18.5.1 简单的for循环 181&lt;br&gt;...

    【推荐】GNU make中文手册

    Makefile的规则&lt;br&gt;4.1 一个例子&lt;br&gt;4.2 规则语法&lt;br&gt;4.3 依赖的类型&lt;br&gt;4.4 文件名使用通配符&lt;br&gt;4.4.1 统配符使用举例&lt;br&gt;4.4.2 通配符存在的缺陷&lt;br&gt;4.4.3 函数wildcard&lt;br&gt;4.5 目录搜寻&lt;br&gt;4.5.1 一般搜索(变量...

    javaScript如何处理从java后台返回的list

    事情: 从java后台返回List&lt;String&gt;类型数据,用于界面显示。但js中想获取它并操作它。直接使用EL表达式,js把它识别成字符串了。不是我想要的啊。。网上搜了搜大家的解决方案…最好的当然是把List集合转成json格式...

    The Scheme

    The Scheme&lt;br&gt;Programming Language&lt;br&gt;&lt;br&gt;... Multitasking with Engines &lt;br&gt;&lt;br&gt;Bibliography&lt;br&gt;&lt;br&gt;Answers to Selected Exercises&lt;br&gt;&lt;br&gt;Formal Syntax of Scheme&lt;br&gt;&lt;br&gt;Summary of Forms&lt;br&gt;&lt;br&gt;Index&lt;br&gt;

    LINUX与UNIX SHELL编程指南

    sed 用法介绍 89&lt;br&gt;10.1 sed怎样读取数据 89&lt;br&gt;10.2 调用sed 89&lt;br&gt;10.2.1 保存sed输出 90&lt;br&gt;10.2.2 使用sed在文件中查询文本的方式 90&lt;br&gt;10.2.3 基本sed编辑命令 90&lt;br&gt;10.3 sed和正则表达式 91&lt;br&gt;10.4 基本...

    Visual C++ 编程资源大全(控件 网络)

    ddialw.EXE &lt;br&gt;DameWare公司出品的电话拨号控件(170KB)&lt;END&gt;&lt;br&gt;6,dipw.EXE &lt;br&gt;DameWare 公司出品 IP 地址控件(169KB)&lt;END&gt;&lt;br&gt;7,dm10e.ZIP &lt;br&gt;发送 E.Mail 的控件(117KB)&lt;END&gt;&lt;br&gt;8,dsdns_eval.EXE &lt;br&gt;IP地址...

    asp.net专家疑难解答200问

    如何备份和恢复数据库 &lt;br&gt; 第9章 ASP.NET安全策略 &lt;br&gt; 第10章 常用功能及函数集 &lt;br&gt;180.如何在ASP.NET中获得客户端IP地址 &lt;br&gt;181.如何取得一定范围内的随机数 &lt;br&gt;182.如何取得文件的扩展名示例一 &lt;br&gt;182.如何...

    VB编程资源大全(控件 网络)

    ddialw.EXE &lt;br&gt;DameWare公司出品的电话拨号控件(170KB)&lt;br&gt;6,dipw.EXE &lt;br&gt;DameWare 公司出品 IP 地址控件(169KB)&lt;br&gt;7,dm10e.ZIP &lt;br&gt;发送 E.Mail 的控件(117KB)&lt;br&gt;8,dsdns_eval.EXE &lt;br&gt;IP地址控件(703KB)&lt;br&gt;9,...

    VB编程资源大全(控件 窗体1)

    led.zip &lt;br&gt;LED控件(165KB)&lt;br&gt;24,led.exe &lt;br&gt;LED 控件(348KB)&lt;br&gt;25,picbtn.exe &lt;br&gt;图片按钮控件(365KB)&lt;br&gt;26,tips.exe &lt;br&gt;工具提示文本控件(354KB)&lt;br&gt;27,numberled.zip &lt;br&gt;NumberLED控件能生成非常漂亮的...

    VB编程资源大全(控件 窗体2)

    led.zip &lt;br&gt;LED控件(165KB)&lt;br&gt;24,led.exe &lt;br&gt;LED 控件(348KB)&lt;br&gt;25,picbtn.exe &lt;br&gt;图片按钮控件(365KB)&lt;br&gt;26,tips.exe &lt;br&gt;工具提示文本控件(354KB)&lt;br&gt;27,numberled.zip &lt;br&gt;NumberLED控件能生成非常漂亮的...

    设计一个简单的网页

    &lt;%# DataBinder.Eval(Container.DataItem, "Name")%&gt; &lt;/td&gt; &lt;td&gt; &lt;%# DataBinder.Eval(Container.DataItem, "Sex")%&gt; &lt;/td&gt; &lt;td&gt; &lt;%# DataBinder.Eval(Container.DataItem, "myEmail")%&gt; &lt;/td&gt;

    asp:Repeater绑定

    %&gt;&lt;/td&gt;&lt;td&gt;&lt;%# Eval&#40;"treatyGovernment"&#41; %&gt;&lt;/td&gt;&lt;td&gt;&lt;%# Eval&#40;"signerTitle"&#41; %&gt;&lt;/td&gt;&lt;td&gt;&lt;%# Eval&#40;"treatySigner"&#41; %&gt;&lt;/td&gt; &lt;td&gt;&lt;input type="button" value="编辑" /&gt;&lt;input...

    Ajax in action 英文版配书源码.rar

    Dear 'Ajax in Action' Readers,&lt;br&gt;&lt;br&gt;This zip file gathers together the source code for the... Your feedback is welcome.&lt;br&gt;&lt;br&gt;Regards,&lt;br&gt;&lt;br&gt;Dave Crane&lt;br&gt;Gloucestershire UK&lt;br&gt;November 2005 &lt;br&gt;&lt;br&gt;

    AspNetPager1

    &lt;td&gt;&lt;%#DataBinder.Eval(Container.DataItem,"Activation")%&gt;&lt;/td&gt; &lt;td&gt;&lt;%#DataBinder.Eval(Container.DataItem, "DealerId")%&gt;&lt;/td&gt; &lt;td&gt;&lt;%#DataBinder.Eval(Container.DataItem, "UserId")%&gt;&lt;/td&gt; &lt;td&gt;&lt;%#...

    repeater的简单使用

    &lt;asp:Label ID="Label1" runat="server" Text='&lt;%#Eval("EmployeeCode") %&gt;'&gt;&lt;/asp:Label&gt;&lt;/td&gt; &lt;td align="center"&gt; &lt;asp:TextBox ID="TextBox1" runat="server" Text='&lt;%#Eval("EmployeeName") %&gt;' Width="100...

    js+html滑出式菜单

    WIDTH="100%"&gt;&lt;FONT face="'+linkFontFamily+'" Size="'+linkFontSize+'"&gt; &lt;A HREF="'+link+'" target="'+target+'" CLASS="ssm2Items"&gt;'+text+'&lt;/A&gt;&lt;/FONT&gt;&lt;/LAYER&gt;&lt;/ILAYER&gt;&lt;/TD&gt;&lt;/TR&gt;')} function addHdr(text) ...

    r40_tinav2.1_最终验证通过_使用CB-S来验证SPI2.0成功_20171114_0945没有外层目录.7z

    #include &lt;linux/spi/spidev.h&gt; #define ARRAY_SIZE(a) (sizeof(a) / sizeof((a)[0])) static void pabort(const char *s) { perror(s); abort(); } //static const char *device = "/dev/spidev0.0"; //static...

Global site tag (gtag.js) - Google Analytics