我想实现的功能是点击登录这张图片,实现表单提交到servlet中,在后台获得登录用户的信息后,返回到另一个页面。但是不知道为什么,怎么点击图片都无法实现表单提交。我的代码是这样的:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ include file="/jsp/common/basejsp.jsp" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>后台管理工作平台</title>
<link rel="stylesheet" type="text/css" href="<%=path%>/css/style.css"/>
<script type="text/javascript" src="<%=path%>/js/common.js"></script>
<script language="javascript">
function changeCode(){
var codeImage = document.getElementById("codeImage");
var changeURL = "<%=path%>/jsp/common/image.jsp?date="+new Date()+"";
codeImage.src = changeURL;
} //登录验证
function doSubmit(){
var account = document.getElementById("username").value;

if(account==""){
alert("用户名或者密码不能为空");
return;
}else if(document.getElementById("password").value==""){
alert("用户名或者密码不能为空");
return;
} else if(document.getElementById("code").value==""){
alert("验证码不能为空");
return;
}
document.getElementByIdName("login").submit();

}
}
//登陆页重填
function doReset(){
document.getElementByName("login").reset();
}

</script>
</head>
<body>
<div id="top"></div>
<form action="<%=path%>/servlet/AdminLoginServvlet?task=login"  name="login" method="post">
  <div id="center">
    <div id="center_left"></div>
    <div id="center_middle">
      <div class="user">
        <label>用户名:
        <input type="text" name="username" id="username" />
        </label>
      </div>
      <div class="user">
        <label>密 码:
        <input type="password" name="password" id="password" />
        </label>
      </div>
      <div class="chknumber">
        验证码:
        <input name="code" type="text" id="code" maxlength="4" class="chknumber_input" />
        <img src="<%=path%>/jsp/common/image.jsp" id="codeImage" onclick="changeCode();"/>
      </div>
    </div>
    <div id="center_middle_right"></div>
     <div id="errorArea">
           <c:if test="${not empty operErr}">
             <div id="operErr">${operErr}</div>
           </c:if>
           <%--错误信息从底层抛上来,然后在这边显示--%>
       </div>   
    <div id="center_submit">
      <div class="button" ><img src="<%=path%>/images/dl.gif" width="57" height="20" onclick="doSubmit()"/> </div>
      <div class="button"> <img src="<%=path%>/images/cz.gif" width="57" height="20" onclick="doReset()";"/> </div>
    </div>
    <div id="center_right"></div>
  </div>
</form>
<div id="footer"></div>
</body>
</html>

解决方案 »

  1.   


    document.getElementByIdName("login").submit();
    这个方法写错了。
    应该是
    document.getElementByName("login").submit();
    直接写个 document.form.submit()不可以么?
      

  2.   

    你不要发这个代码上来,你把在网页上浏览后通过查看源文件的方式,把最终生成的HTML代码发上来。
      

  3.   

    生成的源代码是:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <title>后台管理工作平台</title>
    <link rel="stylesheet" type="text/css" href="/shopping/css/style.css"/>
    <script type="text/javascript" src="/shopping/js/common.js"></script>
    <script language="javascript">
    function changeCode(){
    var codeImage = document.getElementById("codeImage");
    var changeURL = "/shopping/jsp/common/image.jsp?date="+new Date()+"";
    codeImage.src = changeURL;
    } //登录验证
    function doSubmit(){
    var account = document.getElementById("username").value;

    if(account==""){
    alert("用户名或者密码不能为空");
    return;
    }else if(document.getElementById("password").value==""){
    alert("用户名或者密码不能为空");
    return;
    } else if(document.getElementById("code").value==""){
    alert("验证码不能为空");
    return;
    }
    document.form.submit();

    }
    }
    //登陆页重填
    function doReset(){
    document.getElementsByName("login").reset();
    }

    </script>
    </head>
    <body>
    <div id="top"></div>
    <form action="/shopping/servlet/AdminLoginServvlet?task=login"  name="login" method="post">
      <div id="center">
        <div id="center_left"></div>
        <div id="center_middle">
          <div class="user">
            <label>用户名:
            <input type="text" name="username" id="username" />
            </label>
          </div>
          <div class="user">
            <label>密 码:
            <input type="password" name="password" id="password" />
            </label>
          </div>
          <div class="chknumber">
            验证码:
            <input name="code" type="text" id="code" maxlength="4" class="chknumber_input" />
            <img src="/shopping/jsp/common/image.jsp" id="codeImage" onclick="changeCode();"/>
          </div>
        </div>
        <div id="center_middle_right"></div>
         <div id="errorArea">
               
               
           </div>   
        <div id="center_submit">
          <div class="button" ><img src="/shopping/images/dl.gif" width="57" height="20" onclick="doSubmit()"/> </div>
          <div class="button"> <img src="/shopping/images/cz.gif" width="57" height="20" onclick="doReset()";"/> </div>
        </div>
        <div id="center_right"></div>
      </div>
    </form>
    <div id="footer"></div>
    </body>
    </html>
      

  4.   

    <input name="name" type="image" src="image/land.gif" align="middle" />
    这样应该就可以的楼主 你试试
      

  5.   

    document.getElementById("login").submit()
      

  6.   

    我发的帖子就一个人回答  所以问题得不到解决,可以占个地不,对不起了楼主。
    本人菜鸟,学web不到二十天,现在做一个项目
    前台网页六种条件随意组合查询,所以在传入sql语句的时候我是这样写的String sql0 = "select * from Daily where writer='" + dailywriter + "'";
    String sql1 = (start_time == null||start_time=="") ? "":" and datetime>='" + start_time+ "'" ;
    String sql2 = (end_time.equals("")==true) ? (" and datetime<='" + end_time + "'"): "";
    String sql3 = ((proname != null)==true) ? (" and pro_ID='" + proname + "'" ): "";
    String sql4 = (prpname != null) ? (" and PRP_ab='" + prpname + "'" ): "";
    String sql5 = statement != null? (" and statement='" + statement + "'"): "";
    String sql6 = task != "" ? (" and task='" + task + "'" ): "";
      String sql = sql0 + sql1 + sql2 + sql3 + sql4 + sql5 + sql6;
    如上,writer是登录人的名字,成功的在session里取值没问题,可是下面的sql1到sql6 从前台表单页面取值,不为空,都可以取出,为空的时候,赋值的时候却没有赋予""空制符串  
    本来 sql语句都是写成String sql4 = (prpname != null) ? (" and PRP_ab='" + prpname + "'" ): "";这种形式的,但是因为不成功,就针对上面每个都换成不同的表达式形式,
    可是还是不能付空字符串,下面是控制台检验的答应语句:
     and datetime>=''
     and datetime<=''
     and pro_ID=''
     and PRP_ab=''
     and statement=''
     and task=''
    select * from Daily where writer='a1' and datetime>='' and datetime<='' and pro_ID='' and PRP_ab='' and statement='' and task=''
    前台页面的文本框的name值都与这个对应,不会有错,但填写的时候,都可以取值,但是不填写的时候,却不能赋空字符串