今天做设计时,在需求文档看到了这么个要求:用户自定义查询条件,有无报销记录+姓名+报销时间段+病例名后,点击查询按钮。
我一看,这不就是简单的按需查找的方法么?
先看看做好的界面:
点击下拉栏三角符号,下拉栏显示当前可提供按需查询的选项:
就这么简单。。。
那么,如何去实现呢?有经验的大佬肯定有很直观很高级的方法,这里面向初学者,我的思路比较简单:首先,选择框和文本输入框都是独立的控件,而想要用最简单的方法就是将控件里的name=""的值通过form表单提交给servlet,那么这样就要使用js对jsp界面进行处理,将选择框的name=""的值赋给文本框的name,这样就解决了按需查询的需求。
明白了原理,接下来就是实现了,就和上面说所的,设置一个js方法,名字是myFunction():
<script type="text/javascript">
function myFunction(){
<!-- 定义一个objSel,将当前选择框的value赋值给它 -->
var objSel = document.getElementById("selOp").value;
<!-- 将搜索框的id拿到,将赋值后的objSel赋值给它的name,所以将下文的文本框的name设置为空 -->
document.getElementById("input").name=objSel;
}
</script>
然后是搜索框和文本框:
<form method="post" name="form1"
action="<%=path %>/ReimburseServlet?m=showsum" id="serchsta">
<ul class="search" style="padding-left:10px;">
<li><input type="text" placeholder="根据您提供的关键字进行查询,默认为姓名"
name="" class="input" id="input" style="width:250px; line-height:17px;display:inline-block" />
<!-- 这里将文本框的name设置为空, -->
<select
id="selOp" onclick="myFunction()" >
<option value="ifreim">有无报销记录</option>
<option selected value="patientName">姓名</option>
<option value="disName">病名</option>
<option value="reimtime" >报销时间</option>
</select>
<a><input class="button border-main icon-search" type="submit"
id="bt"></a></li>
</form>
<form action="writeExcelforReim_excel.do" method="post">
<input type="submit" class="button border-main icon-plus-square-o"
value="导出为xml文件" />
</form>
以上就是jsp主要的代码,原理在注释中。
然后后台的servlet和方法就需要你自己写了,前台的方法已经搭建完成,只需要servlet获取到当前文本框传来的值就ok!