表单如下:
         <form name="login" action="loginServlet" method="post" onsubmit="checkForm()">
          <p><label class="title">用户名</label>
          <input type="text" name="user" class="input" id="user"/></p>
          <p><label class="title">密 码</label>
          <input type="password" name="password" class="input" id="password"/></p>
          <p><input type="reset" name="reset" value="重写" class="btn"/>
          <input type="submit" name="submit" value="登录" class="btn"/></p>
        </form>
点击登陆后,未执行onsubmit方法。该方法在js中,代码如下:
function checkUser()
{
var str = $.trim($('#user').val());
log("user :" + $('#user').val());
/**
 * 用户名不为空
 * */
if(str == "")
{
alert("请输入用户名 !");
return false;
}
/**
 * 用户名4位到16位的字母、数字和下划线组成
 * */
var Expression = /^(\w){4,16}$/;
var objExp = new RegExp(Expression);
if(objExp.test(str) == false)
return false;
return true;
}function checkPwd()
{
var str = $.trim($('#password').val());
/**
 *密码不为空
 * */
log( "password :" + $('#password').val());
if(str == "")
{
alert("请输入密码  !");
return false;
}

/**
 * 密码由用户名6位到20位的字母、数字和下划线组成
 * */
var Expression = /^([A-Za-z0-9]|[_]){6,20}$/;
var objExp = new RegExp(Expression);

if(objExp.test(str) == false)
return false;

return true;
}function checkForm()
{
System.out.println("enter checkform");
if(!checkUser() || !checkPwd())
{
$('.error').show();
log("msg_1");
return false;
}
else
{
$('.error').hide();
log("msg_2");
return true;
}

是我的onsubmit方法写的有错误吗?为什么不进入checkform方法?jsJavaScript

解决方案 »

  1.   


    <input type="submit" name="submit" onclick="checkForm();" value="登录" class="btn"/>form中的onsubmit="checkForm()"删掉。
      

  2.   

    onsubmit是点击时执行的,action是点击后执行的。我看过你的代码,建议你检查一下,看你的JS代码有没有语法错误你确定,你那个输出语句(System.out)的用法正确?
      

  3.   

    如果LZ想在提交表单前做校验,那还是把type="submit"改为type="button",onclick继续保留,如果校验通过执行表单提交,使用location定向
      

  4.   

    System.out.println("enter checkform");错误!
    用谷歌浏览器就可以看到JS语法有错,一旦语法有错,整个方法都不会执行。
      

  5.   

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
      <script type="text/javascript" src="js/jquery-1.2.6.pack.js"></script>
      </head>
    <body>
      <form name="login" action="loginServlet" method="post" onsubmit="return checkForm();">
              <p><label class="title">用户名</label>
              <input type="text" name="user" class="input" id="user"/></p>
              <p><label class="title">密 码</label>
              <input type="password" name="password" class="input" id="password"/></p>
              <p><input type="reset" name="reset" value="重写" class="btn"/>
              <input type="submit" name="submit" value="登录" class="btn"/></p>
            </form>
    点击登陆后,未执行onsubmit方法。该方法在js中,代码如下:<script type="text/javascript" language="javascript">
    function checkUser()
    {
    var str = $.trim($('#user').val());
    //log("user :" + $('#user').val()); 
    /**
     * 用户名不为空
     * */
    if(str == "")
    {
    alert("请输入用户名 !");
    return false;

    /**
     * 用户名4位到16位的字母、数字和下划线组成
     * */
    var Expression = /^(\w){4,16}$/;
    var objExp = new RegExp(Expression);
    if(objExp.test(str) == false)
    return false; 
    return true;
    }function checkPwd()
    {
    var str = $.trim($('#password').val());
    /**
     *密码不为空
     * */
    //log( "password :" + $('#password').val());
    if(str == "")
    {
    alert("请输入密码  !");
    return false;
    }/**
     * 密码由用户名6位到20位的字母、数字和下划线组成
     * */
    var Expression = /^([A-Za-z0-9]|[_]){6,20}$/;
    var objExp = new RegExp(Expression);if(objExp.test(str) == false){
       alert("密码由用户名6位到20位的字母、数字和下划线组成");
       return false;
    }
    return true;
    }function checkForm()
    {
    if(!checkUser() || !checkPwd())
    {
    //$('.error').show();
    //log("msg_1");
    return false;
    }
    else
    {
    //$('.error').hide();
    //log("msg_2");
    return true;


    </script>
    </body>
    </html>
     注:载入了jquery js文件   注释了 log 语句和System.out.println()语句 可以执行
      

  6.   

    由于我用的是myeclipse10版本,所以在onsubmit中加return报错……+_+ +_+log是自定义的日志方法