我写了一个注册 验证页面,但是不完全。
可以验证输入的信息是否正确,是否符合规定,但是不知道如何控制表单提交,也就是说,不管验证是否提示正确,它都会提交动作。
怎样才能让它再没有通过所有验证时不提交?
小弟才学jquery 望各位 前辈指点。
以下是代码:
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>My JSP 'regist.jsp' starting page</title>
    
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">    
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<script src="./jquery/jquery-latest.js" type="text/javascript">
</script>
<script src="./jquery/jquery.validate.js" type="text/javascript"></script>
<script>
$(document).ready(function(){  $.validator.setDefaults({ 
     submitHandler: function(form) { 
    form.submit(); 
     } 
  }); 
///手机号码规范验证
jQuery.validator.addMethod("isMobile", function(value, element) { 
  var length = value.length; 
  var mobile = /^(((13[0-9]{1})|(15[0-9]{1}))+\d{8})$/; 
  return this.optional(element) || (length == 11 && mobile.test(value)); 
}, "请正确填写您的手机号码"); 
///主函数
$("#reg").validate({
rules:
{
username:"required",
email:{
required:true,
email:true
},
password:{
required:true,
minlength:5
},
confirm:{
required:true,
equalTo:"#password"
},
phone:{
required:true,
isMobile:true
},
homepage:{
required:true,
url:true
},
address:"required"
}
,
messages:
{
username:"不能为空",
email:{
required:"不能为空",
email:"请输入正确的email格式,如[email protected]"
},
password:{
required:"不能为空",
minlength:jQuery.format("密码不能少于{0}位")
},
confirm:{
required:true,
equalTo:"必须与密码一致"
},
phone:{
required:"不能为空",
isMobile:"正确的号码格式,如132...."
},
homepage:{
required:"不能为空",
url:"正确的url格式"
},
address:"不能为空"
}
});});
</script>
  </head>
  <body>
   <fieldset>
   <legend>注册</legend>
   <form action="" method="post" id="reg">
   <p><label for="username">username:</label><em>*</em>
   <input type="text" size="25" name="username" id="username" datatype="s6-18" ajaxurl="valid.php" errormsg="昵称至少6个字符,最多18个字符">
   </p>
   <div class=""></div>
   <p> <label for="password" >password:</label><em>*</em>
   <input type="text" size="25" name="password" id="password">
   </p>
     <p> <label for="confirm" >password:</label><em>*</em>
   <input type="text" size="25" name="confirm" id="confirm">
   </p>
   <p> <label for="email">email:</label>
   <input type="text" size="25" name="email" id="email">
   </p>
   <p><label for="homepage">homepage:</label>
   <input type="text" size="25" name="homepage" id="homepage">
   </p>
   <p><label for="phone">phone:</label>
   <input type="text" size="25" name="phone" id="phone">
   </p>
   <p><label for="address">address:</label>
   <input type="text" size="25" name="address" id="address">
   </p>
   <p></p>
   <p><input type="submit" value="注册"> &nbsp;&nbsp;&nbsp;
   <input type="reset" value="重置">
   </p>
   </form>
   </fieldset>
  </body>
</html>

解决方案 »

  1.   

    <form action="" method="post" onsubmit="return function()">
    </form>
    form表单有个onsubmit事件,控制表单提交
    另外,onsubmit里面必须有return,function()必须返回false或true
      

  2.   

    必须有return 关键字 后面跟一个function()必须返回false或true
      

  3.   

    给你一个我最近做的表单验证实例,登录的验证!使用jquery和jquery插件validate
    <script src="script/jquery-1.6-min.js" type="text/javascript" ></script>
    <script src="script/jquery.validate.js" type="text/javascript" ></script><FORM ID="loginfrm" METHOD="POST" ACTION="ServCheckLogin" >
    <TABLE>
    <TR>
    <TD><label><CENTER>账号:</CENTER></label></TD>
    <TD><input id="name" name="name" value="" type="text" /></TD>
    <TD><span /></TD>
    </TR>
    <TR>
    <TD><label><CENTER>密码:</CENTER></label></TD>
    <TD><input id="password" name="password" value="" type="password" /></TD>
    <TD><span /></TD>
    </TR>
    <TR>
    <TD><label><CENTER>验证码:</CENTER></label></TD>
    <TD><input id="imagecode" name="imagecode" value="" type="text" /></TD>
    <TD><img /><span><label></label></span></TD>
    </TR>
    <TR>
    <TD><center /></TD>
    <TD><INPUT class="button" TYPE="submit" VALUE="登录"></TD>
    <TD><INPUT class="button" TYPE="button" VALUE="注册"></TD>
    </TR>
    </TABLE>
    ____________________________________________________________________________
    $("#loginfrm").validate({
    // onkeyup:false,
    event: "keyup",//按键弹起时验证
    submitHandler:function(form){//验证后执行的动作
    //点击登录时,改变按钮value为loading
    var login = $(":submit[value='登录']")
    login.val("Loading");
    //  .attr("disabled","disabled");
    form.submit();
    },
    rules: {
    name:{
    required:true,
    rangelength:[3,12]
    },
    password: {
    required:true,
    minlength:6
    },
    imagecode:{
    required:true,
    remote: {//发出ajax请求
    url: "CheckImageCode?pn="+new Date().getTime(),    //后台处理程序
    type: "post",              //数据发送方式
    dataType: "json",          //接受数据格式    
    data: {                    //要传递的数据
    other: function(){
    //如果需要传其他值,用other获取
    return ""; 
    }
    }
    }
    }
    },
    messages: {
    name:{required:"用户名不能为空!",
    rangelength:jQuery.format("用户名位数必须在{0}到{1}字符之间!")},
    password: {required:"密码不能为空!",
    minlength:jQuery.format("密码位数必须大于等于6个字符!")},
    imagecode:{
    required:"验证码不能为空!",
    "remote":"验证码错误!"
    }
    },
    errorPlacement: function(error,element){
    var span = element.parent().next().find("span");
    error.appendTo($(span));
    }
    });
      

  4.   

    那肯定是你function()的问题了呀~如果不通过验证,返回fales,通过返回true
    或者你直接试下 onsubmit="return false" 看下表单能不能提交就能确定是不是你的function问题了!
      

  5.   

    你的代码在我本地测试,是正常的。是不是你的jquery验证脚本有问题,重新下个试试。
      

  6.   

    把subit按钮改成button,在验证函数通过的时候再提交,要是这样还能自动提交,那真是有鬼了或者在验证函数的返回值返回之前先alert一下