预先设置值为-1 
假如值为-1的话,就获取当前系统日期的上一个月,如系统日期为2009-10,那就是2009-09
假如值为-2的话,就获取当前系统日期的上两个月,如系统日期为2009-10,那就是2009-09和2009-08
假如值为-3的话,就获取当前系统日期的上三个月,如系统日期为2009-02,那就是2009-01和2008-12和2008-11
以此类推。
然后这些获取出来的值会放在下拉框。必须级联下拉。
就拿值为-3的时候, 那么下拉框 年 为2009和2008  两种  ,当选择2009的时候  出现月份的下拉框只会出现1月  ,当选择2008年的时候会月份会出现12月和11月。1、用JS实现,
2、用java实现
3、用JS加JAVA实现  ,
三种实现方法任选一种。
所有功能必须在jsp页面实现。

解决方案 »

  1.   


    我用java代码已经写出了。但是最后级联菜单不知怎么弄<%
    String importMonth = "-1";
    Calendar cal = java.util.Calendar.getInstance();
    int importM = Integer.parseInt(importMonth); 
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
    cal.add(Calendar.MONTH, importM);
    String year2month[]  = sdf.format(cal.getTime()).split("-");
    int year  = Integer.parseInt(year2month[0]);
    int month = Integer.parseInt(year2month[1]);
    Map map = new LinkedHashMap();
    if (year == Calendar.getInstance().get(1)) {
    for (int i = month; i <= Calendar.getInstance().get(2); i++) {
    map.put(i+"", year+"");
         }
    } else {
    int x = 0;
    for (int j = month; j <= 136; j++) {
    if (x == Math.abs(importM)) {
    break;
    }
    if (j == 13) {
    j = 1;
    year = year + 1;
    map.put(j+"", year+"");
    }
    map.put(j+"", year+"");
    x++;
    }
    }
    %>
    <html:select name="excelImportForm" property="year" >
    <% Set set = new LinkedHashSet();
    for(Iterator iter = map.keySet().iterator();iter.hasNext();){
    String months = iter.next().toString();
    String years =  map.get(months).toString();
    set.add(years);
    }
    for(Iterator iter2 =set.iterator();iter2.hasNext();){
    String y = iter2.next().toString();
    %>
    <html:option value="<%=y %>"><%=y %></html:option>
    <%}%>
    </html:select>
    -<html:select name="excelImportForm" property="month">
    <%for(Iterator iter = map.keySet().iterator();iter.hasNext();){
    String months = iter.next().toString();
    %>
    <html:option value="<%=months %>"><%=months %></html:option>
    <%}%>
    </html:select>
      

  2.   

    这下面是javascript写的,可以动态的算出需要的年月。  现在就将加入级联下拉里面<script language="javascript" type="text/javascript">
    function ss(){
    //当前系统日期
    var date1 = new Date();
    var year1 = date1.getYear();
    var month1 = date1.getMonth()+1;
    //减去两个月后的日期
    var date2 = new Date(year1,month1-5);
    var year2 = date2.getYear();
    var month2 = date2.getMonth();

    if(year1==year2){
    for(var i=month2;i<month1;i++){
    alert(year1+"============="+i);
    }
    }else {
    var x = 0;
    for (var j = month2; j <= 136; j++) {
    if (x == Math.abs(-5)) {
    break;
    }
    if (j == 13) {
    j = 1;
    year2=year2+1;
    }
    x++;
    alert(year2+"============="+j);
    }
    }
    //window.alert(year2+"======"+(month2));
    //window.alert(year2+"======"+(month2));
    }
    </script>