通过Ajax+jquery实现的动态增加一组查询条件的实例

    我们在做信息搜索的时候,可能会需要动态的添加一组搜索条件,如下图(1),我们可能需要同时想搜索 海南省海口市秀英区 以及 山西省太原市太原理工大学 的信息,甚至更多的省市区学校的条件约束,那么,我们就需要动态地“再添加一组省市区学校条件”。点击“再添加一组省市区学校条件”,则新增了一组控件可供选择。如下图(2)。

 

图片

图(1)

 

图片

图(2)

           那么,在客户端的多组同样的查询条件,在服务器端通过一组组的name值去获取数据显然不够合理,更合理的做法是通过设置隐藏域,每个select元素改变了选择的值后,便触发事件将所有当前的省市区学校条件的数据拼串,在提交数据后,将隐藏域数据提交至服务器端再通过一定规则劈串便获取到了所有的查询条件数据。

         为了展示效果, 以下是我将该隐藏域type值设定为text后的结果图:

 

图片

 

         我的拼串规则是,将省份 市 区 和 学校 的ID值通过“,”号分开,而组与组之间,也就是不同组的省市区学校条件之间通过“|”分割。当然,没有选中值的地方,当然为空串。所以以上的结果为“10,10001,100010001,|27,27001,,270010002”。

        大家注意到上图的右下角红圈的“关闭本组”了吧,这是对新增的组别里才有的功能,通过它可以关闭掉当前组的条件,显然,关闭后以前选中的条件则无效,隐藏域的串得重新拼。

 

       以上是功能的大体介绍,在这里说明一点,市和区和学校的信息都是使用AJAX技术动态地从数据库中取的。 好,下面我把以上功能的核心代码粘贴如下,由于项目所限,无法粘贴该功能以外的代码,如果你需要借鉴,请细心分析代码结构。

 

     

      JSP代码:

   

  

 

 

   JS代码:

      

 

 

 

获取市区学校信息的ACTION代码:

CityAction.java-------

   

 

 

AreaAction.java------

  

 

 

 

 

 

------------------------------------------

          以上就是核心代码,也许有朋友会问,为什么会有这样的代码:

     

          这里不是要查询最后一个id为province的元素吗,那么直接 $("#province:last") 不就行了吗?是的,我也曾经想过并尝试过,但是结果是无法正确实现的,每次都是前一个元素的ID值被改了,而不是新增的。所以我换成了这种办法去实现。有更好解释和办法或者有其他疑问的朋友欢迎前来交流。

----------------------

欢迎大家加入我创建的Java魔鬼编程QQ群,群号:253042038 

专注Java开发及其相关领域技术。致力于多线程、大并发、高性能、海量数据研究和学习。欢迎加入一起学习讨论。

 个人博客地址:http://wangchongan.com


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值