带你学习JQuery:表单验证

来源:互联网 发布:新东方托业网络课程 编辑:程序博客网 时间:2024/05/18 03:10

我们在提交表单时,往往要对数据的合法性进行初期的验证,比如说是否为空,是否符合邮箱地址的格式,验证成功才允许提交否则不允许提交。

对于不符合的在后面用红星提示或者文字提示,对于符合的打一个对号。。。

下面实现上面的要求。

首先要有表单:

<form method="post" action="">
 <div class="int">
  <label for="username">用户名:</label>
  <input type="text" id="username" class="required" />
 </div>
 <div class="int">
  <label for="email">邮箱:</label>
  <input type="text" id="email" class="required" />
 </div>
 <div class="int">
  <label for="personinfo">个人资料:</label>
  <input type="text" id="personinfo" />
 </div>
 <div class="sub">
  <input type="submit" value="提交" id="send"/><input type="reset" id="res"/>
 </div>
</form>

如果是必填的,则加红星标识就是class为required的元素:

$("form :input.required").each(function(){

var $required=$("<strong class='high'>*</>");

$(this).parent().append($required);

});

当文本框失去焦点或按键结束后触发检查事件;

$('form:input').blur(function(){

var $parent=$(this).parent();

$parent.find(".formtips").remove();//必须要有这个,否则每次检查如果不合格都会添加提示,越来越多,每次提示前,先将原来的提示清空

if($(this).is('#username'))

{

if(this.value==""||this.value.length<6)

{

var errorMsg='请输入至少六位的用户名';

$parent.append('<span class="formtips onError">'+errorMsg+'</>');

}else{

var okMsg='输入正确' ;

$parent.append('<span class="formtips onSuccess'>'+okMsg+'</>'');

          }

}

 if( $(this).is('#email') )

{
                  if( this.value=="" || ( this.value!="" && !/.+@.+\.[a-zA-Z]{2,4}$/.test(this.value) ) ){
        var errorMsg = '请输入正确的E-Mail地址.';
       $parent.append('<span class="formtips onError">'+errorMsg+'</span>');
    }else{
                      var okMsg = '输入正确.';
                     $parent.append('<span class="formtips onSuccess">'+okMsg+'</span>');
              }

 }
  }).keyup(function(){
     $(this).triggerHandler("blur");
  }).focus(function(){
       $(this).triggerHandler("blur");
  });//end blur

  
  //提交,最终验证。
   $('#send').click(function(){
    $("form :input.required").trigger('blur');
    var numError = $('form .onError').length;
    if(numError){
     return false;
    }
    alert("注册成功,密码已发到你的邮箱,请查收.");
   });

  //重置
   $('#res').click(function(){
    $(".formtips").remove();
   });

 

})

整体代码如下:

<!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>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>
<link href="css/style.css" rel="stylesheet" type="text/css" />
<!--   引入jQuery -->
<script src="../scripts/jquery-1.3.1.js" type="text/javascript"></script>
<script type="text/javascript">
//<![CDATA[
$(function(){
  //如果是必填的,则加红星标识.
  $("form :input.required").each(function(){
   var $required = $("<strong class='high'> *</strong>"); //创建元素
   $(this).parent().append($required); //然后将它追加到文档中
  });
         //文本框失去焦点后
     $('form :input').blur(function(){
    var $parent = $(this).parent();
    $parent.find(".formtips").remove();
    //验证用户名
    if( $(this).is('#username') ){
     if( this.value=="" || this.value.length < 6 ){
         var errorMsg = '请输入至少6位的用户名.';
                        $parent.append('<span class="formtips onError">'+errorMsg+'</span>');
     }else{
         var okMsg = '输入正确.';
         $parent.append('<span class="formtips onSuccess">'+okMsg+'</span>');
     }
    }
    //验证邮件
    if( $(this).is('#email') ){
    if( this.value=="" || ( this.value!="" && !/.+@.+\.[a-zA-Z]{2,4}$/.test(this.value) ) ){
                      var errorMsg = '请输入正确的E-Mail地址.';
       $parent.append('<span class="formtips onError">'+errorMsg+'</span>');
    }else{
                      var okMsg = '输入正确.';
       $parent.append('<span class="formtips onSuccess">'+okMsg+'</span>');
    }
    }
  }).keyup(function(){
     $(this).triggerHandler("blur");
  }).focus(function(){
       $(this).triggerHandler("blur");
  });//end blur

  
  //提交,最终验证。
   $('#send').click(function(){
    $("form :input.required").trigger('blur');
    var numError = $('form .onError').length;
    if(numError){
     return false;
    }
    alert("注册成功,密码已发到你的邮箱,请查收.");
   });

  //重置
   $('#res').click(function(){
    $(".formtips").remove();
   });
})
//]]>
</script>
</head>
<body>

<form method="post" action="">
 <div class="int">
  <label for="username">用户名:</label>
  <input type="text" id="username" class="required" />
 </div>
 <div class="int">
  <label for="email">邮箱:</label>
  <input type="text" id="email" class="required" />
 </div>
 <div class="int">
  <label for="personinfo">个人资料:</label>
  <input type="text" id="personinfo" />
 </div>
 <div class="sub">
  <input type="submit" value="提交" id="send"/><input type="reset" id="res"/>
 </div>
</form>

</body>
</html>

 

原创粉丝点击