我在jsp中的form中加
<INPUT type="submit" name="qd" value="人员授权" onClick="window.close()">
提交按钮
来关闭当前页,并且进入servlet中
<form  name="form1" action="../Cdsqservlet?cdid=<%=CDid%>" method="POST">
但是点提交按钮的时候,关闭当前页,但是没有执行servlet,这是为什么?
下面是代码:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><HTML>
<HEAD>
<%@ page 
language="java"
contentType="text/html; charset=GB18030"
pageEncoding="GB18030"
import="java.sql.*,com.linkdb.*,java.util.StringTokenizer"
%>
<META http-equiv="Content-Type" content="text/html; charset=GB18030">
<META name="GENERATOR" content="IBM WebSphere Studio">
<META http-equiv="Content-Style-Type" content="text/css">
<LINK href="../theme/Master.css" rel="stylesheet" type="text/css">
<TITLE>cdsq.jsp</TITLE>
<jsp:useBean id="cdsq" class="com.cdsqbean.Cdsqbean" scope="page"></jsp:useBean>
<jsp:useBean id="ry" class="com.dbopt.Ryxxoptbean" scope="page"></jsp:useBean><% 
request.setCharacterEncoding("GB18030");
response.setContentType("text/html; charset=GB18030");
String cdid=request.getParameter("cdid");
int CDid=Integer.parseInt(cdid);
cdsq.delsq(CDid);
%>
<style>
td, select, input {
font-size: 9pt
}.sel {
font-size: 12px;
width: 100px;
position: relative;
left: -2px;
top: -2px;
}.box {
border: 1 solid #BBBBBB;
height: 19px;
width: 99px;
}.box2 {
border: 1 solid #FFFFFF;
overflow: hidden;
height: 22px;
}
</style><script language='Javascript'>//***********************************************************************************
  var subcat = new Array();
                                <%
   
 String sql="SELECT ryxm,bmmc,rybm FROM t_xtryb a,t_xtbmb b where a.szbmbm=b.bmbm order by bmpx";
AbstractPersistenceFactory  con=new AbstractPersistenceFactory ();
 Connection conn=con.getconnections();
 Statement stmt=conn.createStatement();
 ResultSet rs=stmt.executeQuery(sql);
 int temp=0;
 while(rs.next()){
%>
subcat[<%=temp%>]=new Array("<%=rs.getString("ryxm")%>","<%=rs.getString("bmmc")%>","<%=rs.getString("rybm")%>");<%
 temp = temp + 1;
}%>//*************************************************************************************
                                                        //   这个数组可以根var onecount=subcat.length;
var c=0;d=0;                                            //     2个select的optoins的索引位置...function moveto2(fn,s1,s2,s3,s4)                                //     ">>" Button function
{
    fs1=eval(fn+"."+s1);                                //      formName1.SelectName1
    fs2=eval(fn+"."+s2);
    fs3=eval(fn+"."+s3);
    fs4=eval(fn+"."+s4);    d=fs2.options.length;
    for(i=0;i<fs1.options.length;i++)
        {
            var myOption = new Option(fs1.options[i].innerText,fs1.options[i].value);  
            var myOption1 = new Option(fs3.options[i].innerText,fs3.options[i].value);             fs2.options[d]=myOption ;
            fs2.options[d].selected=true;
            fs1.options[i].selected=true;
            fs4.options[d]=myOption1 ;            d++;
        }
    k=0;
    while(k<fs1.options.length)
        {
            fs1.remove(k);
            fs3.remove(k);
            c--;
        }
}function moveto1(fn,s1,s2,s3,s4)    //    "<<" Button
{
   fs1=eval(fn+"."+s1);
   fs2=eval(fn+"."+s2);
   fs3=eval(fn+"."+s3);
   fs4=eval(fn+"."+s4);
   
   c=fs1.options.length;
   for(i=0;i<fs2.options.length;i++)
      {
            var myOption = new  Option(fs2.options[i].innerText,fs2.options[i].value);  
            var myOption1 = new Option(fs4.options[i].innerText,fs4.options[i].value); 
            fs1.options[c]=myOption ;
            fs1.options[c].selected=true;
            fs2.options[i].selected=true;
            fs3.options[c]=myOption1 ;            c++;
      }
   k=0;
   while(k<fs2.options.length)
        {
            fs2.remove(k);
            fs4.remove(k);            d--;
        }
}function move1to2(fn,s1,s2,s3,s4)    //      ">" Button
{
    fs1=eval(fn+"."+s1);
    fs2=eval(fn+"."+s2);
    fs3=eval(fn+"."+s3);
    fs4=eval(fn+"."+s4);
  
    c=fs1.options.length;
    d=fs2.options.length;
      for(i=0;i<fs1.options.length;i++)
        {    
        
         if(fs1.options[i].selected)
           { 
         
            var myOption = new  Option(fs1.options[i].innerText,fs1.options[i].value);  
            var myOption1 = new  Option(fs3.options[i].innerText,fs3.options[i].value);
            fs2.options[d]=myOption ;
            fs2.options[d].selected=true;
             fs4.options[d]=myOption1 ; 
           
            d++; 
             
             }
                
        }
           
    k=0;
    while(k<fs1.options.length+3)                                     {
            del(fn,s1,s2,s3,s4);
            k++;
        }
 }
function del(fn,s1,s2,s3,s4)                          {
    fs1=eval(fn+"."+s1);
    fs2=eval(fn+"."+s2);
    fs3=eval(fn+"."+s3);    for(i=0;i<fs1.options.length;i++)
        {
            if(fs1.options[i].selected)
                {    
                    fs1.remove(i);
                    fs3.remove(i);
                    c--;
                }
        }
}function move2to1(fn,s1,s2,s3,s4)    //       "<" Button
{   
    fs1=eval(fn+"."+s1);
    fs2=eval(fn+"."+s2);
    fs3=eval(fn+"."+s3);
    fs4=eval(fn+"."+s4);    c=fs1.options.length;
    for(i=0;i<fs2.options.length;i++)
        {
            if(fs2.options[i].selected)
                {    
                    var myOption = new Option(fs2.options[i].innerText,fs2.options[i].value);  
                    var myOption1 = new  Option(fs4.options[i].innerText,fs4.options[i].value);                    fs1.options[c]=myOption ;
                    fs1.options[c].selected=true;
                    fs3.options[c]=myOption1 ;
                    //fs3.options[d].selected=true;                    c++;
                }
        }
    k=0;
    while(k<fs2.options.length+3)
        {
            del1(fn,s1,s2,s4);
            k++;
        }
}function del1(fn,s1,s2,s4)
{
    fs1=eval(fn+"."+s1);
    fs2=eval(fn+"."+s2);
   // fs3=eval(fn+"."+s3);
    fs4=eval(fn+"."+s4);    for(i=0;i<fs2.options.length;i++)
        {
            if(fs2.options[i].selected)
                {    
                    fs2.remove(i);
                    fs4.remove(i);
                    d--;
                }
        }
}function F_SelectUserStr(fn,s1,s2)
  {     fs1=eval(fn+"."+s1);
     fs2=eval(fn+"."+s2);
     c=fs1.options.length;
         fs2.value="";
    for(i=0;i<c;i++)
      {
    
      
                if(i==0)
                  {
              
                   fs2.value=fs2.value+fs1.options[i].value;
                    }
                      else
                         {
                             fs2.value=fs2.value+","+fs1.options[i].value;
                              }
           
        }
       form1.src1.style.pixelWidth=200;
    }

解决方案 »

  1.   

    function changelocation(locationid)                      {
        form1.src1.length = 0; 
        form1.src11.length = 0;
        var locationid=locationid;
        var i;
        for (i=0;i < onecount; i++)
            {
                if (subcat[i][1] == locationid)
                { 
                    form1.src1.options[form1.src1.length] = new Option(subcat[i][0], subcat[i][0]);
                    form1.src11.options[form1.src11.length] = new Option(subcat[i][2], subcat[i][2]);
                   form1.src1.style.pixelWidth=200;
                }        
            }
            
        } 
    </script>
    <body>
    <form  name="form1" action="../Cdsqservlet?cdid=<%=CDid%>" method="POST"><div align="center">
    <center>
    <table border="1" cellspacing="0" width="500" bgcolor="#F7F7F7">
    <tr>
    <td width="100" align="right" valign="middle">接收人:</td>
    <td width="200">
    <div class="box2"><select size="1" name="ms"
    onChange="changelocation(this.value)" class="box2">
    <option value="1">请选择相关部门列表</option>
    <%
                  sql="SELECT bmmc,bmbm FROM t_xtbmb";
                  conn=con.getconnections();
                  stmt=conn.createStatement();
                  rs=stmt.executeQuery(sql);
                  while(rs.next()){
                %>
    <option value="<%=rs.getString("bmmc")%>"><%=rs.getString("bmmc")%></option>
    <%
       }
    %>
    </select></div>
    <select size="8" name="src1" multiple>
    <option value="1">请选择相关用户至右面列表</option>
    </select></td>
    <td width="61" valign="middle"><input type="button" value=" > "
    name="B3"
    onclick="move1to2('form1','src1','src2','src11','src22')&F_SelectUserStr('form1','src22','T_SelectUser')"
    style="background-color: #FFFFF4; border: 1 ridge #C0C0C0"><br>
    <br> <input type="button" value=" < " name="
    B4" onclick="move2to1('form1','src1','src2','src11','src22')&F_SelectUserStr('form1','src22','T_SelectUser')"
    style="background-color: #FFFFF4; border: 1 ridge #C0C0C0"><br>
    <br> <input type="button" value=" >> " name="B5"
    onclick="moveto2('form1','src1','src2','src11','src22')&F_SelectUserStr('form1','src22','T_SelectUser')"
    style="background-color: #FFFFF4; border: 1 ridge #C0C0C0"><br>
    <br> <input type="button" value=" << " name="
    B6" onclick="moveto1('form1','src1','src2','src11','src22')&F_SelectUserStr('form1','src22','T_SelectUser')"
    style="background-color: #FFFFF4; border: 1 ridge #C0C0C0"></td>
    <td width="120">



    <select size="7" name="src2" multiple>
            
    </select></td>
    </tr>
    </table><div style="display: none">
    <table> <tr>
    <td  align="right" valign="middle" colspan="4"><SELECT size="8" name="src11" multiple>
    </SELECT><SELECT size="8" name="src22" multiple>
    </SELECT></td>
    </tr> <tr>
    <td  align="right" valign="middle" colspan="4">
    <p align="left"><input type="text" name="T_SelectUser" size="79">
    </td>
    </tr>
    </table>
    <script language="javascript">
    var subcat1 = new Array();
    var strmc=null;
    var z=0;
    <%
     String rybms=cdsq.getGwbm();              String s2=null;
                  StringTokenizer stringtokenizer = new StringTokenizer(rybms, ",");
                   while(stringtokenizer.hasMoreTokens()) {
                   s2 = stringtokenizer.nextToken();
                  %>
                   
                
                 for(y=0;y<onecount;y++)
                   {
                     if(subcat[y][2]=="<%=s2%>")
                      {
                        strmc=subcat[y][0];
                        
                       }
                 
                     }  
             subcat1[z]=new Array("<%=s2%>",strmc);
                   
                   z++;
                   <%
                    }
              %>
    var Strcount=subcat1.length;
        form1.src2.length = 0; 
        form1.src22.length = 0;
       
        var i;
        for (i=0;i < Strcount; i++)
            {
                 form1.src2.options[form1.src2.length] = new Option(subcat1[i][1], subcat1[i][1]);
                 form1.src22.options[form1.src22.length] = new Option(subcat1[i][0], subcat1[i][0]);
                        
     }</script></div></center>
    </div><script language="javascript">
                form1.src2.style.pixelWidth=200;
    form1.src1.style.pixelWidth=200;
    </script>
    <INPUT type="submit" name="qd" value="人员授权" onClick="window.close()">
    </form></body></html>
      

  2.   

    <INPUT type="submit" name="qd" value="人员授权" onClick="window.close()">
    你还没提交就关闭了
    <INPUT type="submit" name="qd" value="人员授权">
    提交到当前窗口,你应当处理完毕后再
    out.println("<script>window.close()</script>");
      

  3.   

    onClick="window.close()"去掉就行了,提交表单,页面就会跳转到servlet,好像不需要人为去关闭吧?---菜鸟之见
      

  4.   

    我只是想关闭form这一页,然后在关闭的同时去到servlet处理
      

  5.   

    submit是表单的提交事件,click是按扭的,他们是有先后的你不关闭form这个页面,直接提交到servlet,然后在servlet里面转到一个空页面,这个空页面就一段关闭自己的脚本
      

  6.   

    是的它们是有向后顺序的,也就是说onclick是先于action执行的,你可以用一个onclick命令,然后吧那段代码封装再javascript函数中!写的时候只须先进行表单提交然后关闭窗口就OK了。在方法中可这样写document.forms[0].action = "../Cdsqservlet?cdid=<%=CDid%>"; 关闭本窗口。