婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > Ajax注冊用戶時實現表單驗證

Ajax注冊用戶時實現表單驗證

熱門標簽:襄陽外呼系統接口 科智聯智能電銷機器人 目標三維地圖標注 百靈鳥 青海醫療智能外呼系統怎么樣 老虎郵局地圖標注點 徐州電銷卡外呼系統供應商 上海浦東百度地圖標注中心注冊 外呼系統獲取客戶手機號

很多時候在網站上注冊時,我們會發現,注冊表單通常需要檢查用戶名和電子郵件地址的可用性;從而確保用戶之間不擁有相同的用戶名和電子郵件地址;一些網站喜歡在用戶提交填寫的用戶信息時,做信息可用性的檢查,而一些網站會做實時的用戶名和電子郵件地址可用性檢查,例如:“用戶名”文本框失去焦點時;就用戶體驗來說,實時的用戶信息檢查用戶體驗效果更好,而不是在表單提交后,告訴用戶信息不符合系統要求。

下面截圖是新浪微博的注冊界面,它采用的是實時的用戶信息檢查,如:手機號碼和用戶名等信息。

圖1新浪微博注冊表單

1、正文

假設,現在要求我們實現一個注冊界面并且它采用實時方式檢查用戶信息是否符合系統的要求。

其中,注冊界面包含:用戶名,郵件地址,密碼和微博地址等信息;實時檢查:當文本框失去焦點時對信息進行實時檢查,例如:“用戶名”文本框失去焦點時,觸發頁面發送Ajax請求,到數據庫中用戶是否可用,接著把查詢結果返回到前端頁面中。

對于表單輸入檢查,我們將使用前一博文《自定義jQuery插件Step by Step》中,自定義表單信息檢查插件對輸入信息進行檢查。

圖2注冊驗證過程

注冊表單設計

現在,讓我們定義注冊表單,它包含:用戶名,郵件地址,密碼和微博地址等信息,由于時間的關系,我們已經把注冊表單界面的定義好了,具體實現代碼如下:

body>
 div id="Div1">
 !-- Start Sign Up Form -->
 form action="#signup-form" id="Form1">
 h2>
 Sign Up/h2>
 fieldset>
 div class="fieldgroup">
 label for="name">
 Name/label>
 input class="form_element" type="text" name="name" validation="required nameAvailable" />
 span class='availability_status'>/span>
 /div>
 div class="fieldgroup">
 label for="email">
 Email/label>
 input class="form_element" type="text" name="email" validation="email" />
 span>/span>
 /div>
 div class="fieldgroup">
 label for="password">
 Password/label>
 input class="form_element" type="password" name="password" validation="password" />
 span>/span>
 /div>
 div class="fieldgroup">
 label for="weibo">
 Weibo/label>
 input class="form_element" type="text" name="weibo" validation="url" />
 span>/span>
 /div>
 div class="fieldgroup">
 input type="submit" class="submit" value="Sign up">
 span>/span>
 /div>
 /fieldset>
 div class="fieldgroup">
 p>
 Already registered? a >Sign in/a>./p>
 /div>
 /form>
 !-- End Sign Up Form -->
 /div>
/body>

上面,我們實現了注冊表單,它包含:用戶名,郵件地址,密碼和微博地址文本框,當“用戶名”失去焦點時,發送Ajax請求實時檢查用戶名是否可用,并且動態地加載圖片表示檢查中和相應的檢查結果。

圖3注冊表單

jQuery Validation插件

現在,我們需要修改一下前一博文中定義的表單檢查控件,需要增加用戶名檢查和文本框失去焦點事件(blur event)。

首先,我們在Validation類型中,增加用戶名檢查方法,由于用戶檢查是通過發送Ajax請求,然后到數據庫中查詢是否存在該用戶名來確定該用戶名是否可用。

nameAvailable: {
 check: function(value) {

 if (value) {
 var dataString = 'username=' + value;
 var result;

 //nbsp;Checking availability...
 // Loads checking image.
 $(".availability_status").html('img src="loader.gif" align="absmiddle">');
 
 // Sends ajax request to check the name is available or not.
 $.ajax({
 type: "GET",
 url: "UserService.ashx",
 data: dataString,
 success: function(data) {
 
 // When the checking completed, then loaded corresponding css style.
 $('.availability_status').ajaxComplete(function(event, request, settings) {
 if (data == false) {
 $('.availability_status').html('');
 $('.availability_status').removeClass('tick');
 $('.availability_status').addClass('error');
 return true;
 }
 else {
 $('.availability_status').html('');
 $('.availability_status').removeClass('error');
 $('.availability_status').addClass('tick');

 return false;
 }
 });

 }
 });

 // Sends a asyn reqeust, return false temporary.
 return false;
 //// e.preventDefault();
 }
 else {
 $('.availability_status').removeClass('tick');
 $('.availability_status').removeClass('error');
 return false;
 }
 },
 msg: "",
 tip: "Should enter 4-30 characters, support letter, figures and _ or -"
}

上面,我們完成了在Validation類型中增加nameAvailable()方法,它通過發送異步Ajax請求來檢查用戶名是否可用,在檢查的過程中,在輸入框右邊動態地加載圖片來表示檢查中,當檢查結束加載相應的圖片表示用戶是否可用。

接下來,我們將添加focus和blur事件,當文本框得到焦點時觸發focus事件,提示輸入信息的要求,當文本框失去焦點時觸發blur事件,發生實時Ajax請求,例如:檢查用戶名是否可用。

由于,事件方法應該是Field類型公開的方法,確實我們也不想為每個Field對象都定義自己事件方法,所以我們通過原型鏈的方式公開事件方法focus()和blur(),具體實現如下:

// The prototype of Field type.
Field.prototype = {

 // Public method.
 attach: function(event) {

 // The object refers to Field object.
 var obj = this;
 // When field lost focus, then invoked the validate method.
 if (event == "blur") {
 obj.field.bind("blur", function() {
 return obj.validate();
 });
 }

 // When field got focus, then invoked the hint method.
 if (event == "focus") {
 obj.field.bind("focus", function() {
 return obj.hint();
 });
 }
 }
}

我們給Field的原型鏈添加了事件響應事件blur和focus,當失去焦點時觸發Field的vlidate()方法,獲得焦點時觸發Field的hint()方法。

數據表設計

前面,我們提到注冊表單的用戶名可用性檢查設計是通過發送Ajax請求,然后到數據庫中查詢用戶名是否存在來確定用戶名的可用性。

接下來,我們添加數據庫表jk_user用來存儲用戶信息,它包括用戶名、密碼(注意:這里沒有考慮隱私信息的加密存儲)、顯示名稱和注冊日期等,具體設計如下:

-- =============================================
CREATE TABLE [dbo].[jk_users](
 -- This is the reference to Users table, it is primary key.
 [ID] [bigint] IDENTITY(1,1) NOT NULL,
 [user_login] [varchar](60) NOT NULL,
 [user_pass] [varchar](64) NOT NULL,
 [user_nicename] [varchar](50) NOT NULL,
 [user_email] [varchar](100) NOT NULL,
 [user_url] [varchar](100) NOT NULL,

 -- This field get the default from function GETDATE().
 [user_registered] [datetime] NOT NULL CONSTRAINT [DF_jk_users_user_registered] DEFAULT (getdate()),
 [user_activation_key] [varchar](60) NOT NULL,
 [user_status] [int] NOT NULL CONSTRAINT [DF_jk_users_user_status] DEFAULT ((0)),
 [display_name] [varchar](250) NOT NULL
)
 ajaxform2

圖4數據表設計

服務端設計

前面,我們實現了用戶表的設計,由于注冊表單通過發送Ajax請求訪問服務器端公開的方法,然后通過該公開方法訪問數據庫。

接下來,我們定義用戶表(jk_user)的數據庫訪問對象(DAO),它包含方法IsAvailableUser()用來檢查用戶名是否可用,具體的實現如下:

/// summary>
/// The user dao manager.
/// /summary>
public class UserManager
{
 private const string Query = "SELECT user_login, user_email, user_url FROM jk_users WHERE (user_login = @user_login)";

 /// summary>
 /// Initializes a new instance of the see cref="UserManager"/> class.
 /// /summary>
 public UserManager()
 {
 }

 /// summary>
 /// Determines whether the user is available or not, with specified username.
 /// /summary>
 /// param name="userName">Name of the user./param>
 /// returns>
 /// c>true/c> if is available user; otherwise, c>false/c>.
 /// /returns>
 public bool IsAvailableUser(string userName)
 {
 using (var con = new SqlConnection(ConfigurationManager.ConnectionStrings["SQLCONN2"].ToString()))
 using (var com = new SqlCommand(Query, con))
 {
 // Pass user_login parameter to sql statement. 
 com.Parameters.Add("@user_login", SqlDbType.VarChar).Value = userName;
 com.Connection.Open();
 return !com.ExecuteReader().HasRows;
 }
 }
}

現在,我們完成了數據庫訪問對象UserManager,它包含方法IsAvailableUser()來檢查用戶是否可用,如果該用戶名已經存在返回false,反之返回true。

接下來,我們需要實現服務器端類UserService,讓客戶端通過它來調用UserManager中的IsAvailableUser()方法,首先我們創建一般處理程序(ASHX文件),實現ProcessRequest()方法,具體實現如下:

/// summary>
/// The user availability check service.
/// /summary>
public class UserService : IHttpHandler
{
 public void ProcessRequest(HttpContext context)
 {
 // Response json type.
 context.Response.ContentType = "application/json";
 context.Response.Charset = "utf-8";

 var manager = new UserManager();

 string userName = context.Request.QueryString["username"];

 // Checks the username empty or not.
 if (string.IsNullOrEmpty(userName))
 {
 throw new Exception("Username can't be empty");
 }

 // Invokes the IsAvailableUser method.
 var result = manager.IsAvailableUser(userName);

 // Serializes data to json format. 
 var json = new DataContractJsonSerializer(result.GetType());
 json.WriteObject(context.Response.OutputStream, result);
 }

 // Whether can resuable by other handler or not.
 public bool IsReusable
 {
 get
 {
 return true;
 }
 }
}

大家注意到UserService類實現了IHttpHandler接口,該接口包含一個方法ProcessRequest()方法和一個屬性IsReusable;ProcessRequest()方法用于處理入站的Http請求,在默認情況下,UserService類把Response內容類型定義為application/json,這樣我們就可以把數據通過JSON格式進行傳輸;IsReusable屬性表示相同的處理程序是否可以用于多個請求,這里我們設置為true,那么處理程序可以用于多個請求。

前端實現

注冊表單在檢查用戶名時會在輸入框的右邊動態地加載圖片,這里我們使用CSS Sprite技巧實現圖片的動態加載。

當頁面加載時,不是加載每個單獨圖片,而是一次加載整個組合圖片。這是一個了不起的改進,因為我們只需發送一個HTTP請求獲取組合圖片就OK了,它大大減少了HTTP請求的次數,減輕服務器壓力,同時縮短了懸停加載圖片所需要的時間延遲,使效果更流暢,不會停頓。

這里,我們使用可以一個在線的工具SpritePad設計組合圖片和生成相應的CSS代碼。

圖5組合圖片

上面,我們已經準備好組合圖片了,接下來我們添加CSS代碼動態加載“正確”和“出錯”圖片,具體實現如下:

/*CSS Sprite*/
/*Loads tick picture*/
.tick
{
 width: 17px;
 height: 17px;
 margin: 6px 0 0;
 float: right;
 background: url(../images/tipicon.png);
 background-position: 0px -32px;
 display: block;
 /*text-decoration: none;
 vertical-align:middle;*/
}

/*Loads error picture*/
span.error
{
 width: 17px;
 height: 17px;
 margin: 6px 0 0;
 float: right;
 background: url(../images/tipicon.png);
 background-position: 0px -15px;
 display: block;
 /*text-decoration: none;
 vertical-align:middle;*/
}

接著,我們在nameAvailable()方法中的Ajax方法添加文件“UserService.ashx”請求,并傳遞用戶名給服務器;在數據庫中查詢用戶名是否已經存在,存在返回“false”,否則返回“true”。

// Sends ajax request to check the name is available or not.
$.ajax({
 type: "GET",
 url: "UserService.ashx",
 data: dataString,
 success: function(data) {

 // When the checking completed, then loaded corresponding css style.
 $('.availability_status').ajaxComplete(function(event, request, settings) {
 if (data == false) {
 $('.availability_status').html('');
 $('.availability_status').removeClass('tick');
 $('.availability_status').addClass('error');
 return true;
 }
 else {
 $('.availability_status').html('');
 $('.availability_status').removeClass('error');
 $('.availability_status').addClass('tick');
 return false;
 }
 });

 }
});

最后,我們在注冊表單中添加調用自定義驗證控件的jQuery代碼,具體實現如下:

script type="text/javascript">

 // Sets display image size.
 pic = new Image(16, 16);
 pic.src = "loader.gif";

 $(function() { // jQuery DOM ready function.

 // Get the form object.
 var signUpForm = $("#signup-form");

 // Invokes the validation method.
 signUpForm.validation();

 });
/script>

圖6用戶注冊界面

如果大家還想深入學習,可以點擊兩個精彩的專題:jquery表單驗證大全 JavaScript表單驗證大全

本文主要介紹了Ajax注冊表單的設計,通過發送Ajax請求方式實時地檢查用戶名的可用性,并且使用了自定義的表單驗證插件檢查輸入信息的正確性。

您可能感興趣的文章:
  • jquery+ajax實現注冊實時驗證實例詳解
  • 用AJAX實現頁面登陸以及注冊用戶名驗證的簡單實例
  • PHP+Ajax異步通訊實現用戶名郵箱驗證是否已注冊( 2種方法實現)
  • Ajax驗證用戶名或昵稱是否已被注冊
  • Asp.net下利用Jquery Ajax實現用戶注冊檢測(驗證用戶名是否存)
  • ajax對注冊名進行驗證檢測是否存在于數據庫中
  • AJAX+JAVA用戶登陸注冊驗證的實現代碼
  • asp ajax注冊驗證之 防止用戶名輸入空格
  • 使用struts2+Ajax+jquery驗證用戶名是否已被注冊
  • AJAX實現注冊驗證用戶名

標簽:紅河 辛集 商洛 佛山 揭陽 股票 咸寧 荊州

巨人網絡通訊聲明:本文標題《Ajax注冊用戶時實現表單驗證》,本文關鍵詞  Ajax,注冊,用戶,時,實現,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Ajax注冊用戶時實現表單驗證》相關的同類信息!
  • 本頁收集關于Ajax注冊用戶時實現表單驗證的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    国产精品久久影院| 欧美裸体一区二区三区| 国产一区二区三区在线观看免费 | 国产精品免费久久| 老鸭窝一区二区久久精品| 欧美丝袜自拍制服另类| 亚洲精品日日夜夜| 欧美亚洲综合在线| 婷婷久久综合九色综合绿巨人| 免费av成人在线| 久久综合九色综合欧美就去吻| 九一九一国产精品| 精品国产亚洲在线| 成人精品小蝌蚪| 日本一区二区视频在线| 99久久er热在这里只有精品66| 国产精品久久久久久户外露出| 一本一本大道香蕉久在线精品| 亚洲人吸女人奶水| 欧美性受xxxx黑人xyx性爽| 亚洲午夜精品17c| 日韩欧美一二三四区| 丰满亚洲少妇av| 亚洲狼人国产精品| 日韩午夜av电影| 男女男精品网站| 中文成人综合网| 蜜桃视频免费观看一区| 91麻豆精品国产91久久久久久| 色婷婷久久99综合精品jk白丝| 成人不卡免费av| 一本高清dvd不卡在线观看 | 日本午夜精品视频在线观看 | 欧美一区二区在线观看| 91精品午夜视频| 精品国内二区三区| 欧美极品美女视频| 亚洲最大色网站| 美女视频网站黄色亚洲| 麻豆国产一区二区| 成人av一区二区三区| 欧美亚洲愉拍一区二区| 欧美一区二区精美| 国产调教视频一区| 中文字幕日韩av资源站| 亚洲一级二级三级| 捆绑调教美女网站视频一区| 日本欧美韩国一区三区| 国产精品资源在线看| 一本到不卡精品视频在线观看 | 国产欧美精品一区二区三区四区| 国产精品久久久久久亚洲伦| 亚洲女与黑人做爰| 亚洲影视在线观看| 免费黄网站欧美| 激情丁香综合五月| av中文字幕在线不卡| 色综合久久综合中文综合网| 99国内精品久久| 日韩丝袜美女视频| 在线欧美日韩精品| 欧美午夜精品电影| 粉嫩嫩av羞羞动漫久久久| 色综合久久久久久久| 成人蜜臀av电影| 91麻豆免费看| 欧美色综合影院| 久久蜜桃香蕉精品一区二区三区| 久久综合给合久久狠狠狠97色69| 亚洲欧美一区二区不卡| 亚洲a一区二区| bt7086福利一区国产| 欧美视频在线一区| 国产精品污污网站在线观看| 亚洲免费大片在线观看| 国产一区在线观看麻豆| 一区二区三区不卡在线观看 | 日韩视频国产视频| 欧美一级日韩免费不卡| 亚洲美女少妇撒尿| 国产精品网曝门| 国产激情精品久久久第一区二区| 成人精品免费看| 国产日产欧美一区二区视频| 日韩理论电影院| 波多野结衣在线一区| 日韩一级免费观看| 日韩高清不卡一区二区三区| av动漫一区二区| 国产日韩欧美不卡在线| 亚洲成人综合视频| 在线精品观看国产| 国产亚洲午夜高清国产拍精品 | 日韩欧美中文一区| 亚洲一二三四久久| 狂野欧美性猛交blacked| 欧洲一区二区av| 久久久国产精华| 国产九色sp调教91| 91精品国产麻豆| 六月婷婷色综合| 精品视频在线免费看| 亚洲电影一级片| 色哟哟日韩精品| 国产精品免费看片| 韩国午夜理伦三级不卡影院| 欧美日韩成人综合天天影院 | 在线看日本不卡| 香蕉成人伊视频在线观看| 国产在线视频不卡二| 精品成人一区二区| 中文字幕亚洲一区二区av在线 | 成人午夜免费av| 欧美成人性福生活免费看| 久久国产三级精品| 91麻豆精品国产无毒不卡在线观看| 欧美aaa在线| 亚洲亚洲人成综合网络| 国产欧美日韩中文久久| 久久99精品久久久久久国产越南| 亚洲成人一区二区| 亚洲综合色自拍一区| 中文字幕成人av| 91视频国产资源| 国产在线视频一区二区三区| 日韩电影在线一区二区三区| 中文字幕日本不卡| 首页国产欧美久久| 在线看一区二区| 亚洲美腿欧美偷拍| 93久久精品日日躁夜夜躁欧美| 6080日韩午夜伦伦午夜伦| 亚洲电影第三页| 日韩女优电影在线观看| 一区二区三区四区视频精品免费| 国产91精品一区二区| 欧美精品一区二区高清在线观看| 美女一区二区三区| 国产精品综合网| 3d成人动漫网站| 欧美aa在线视频| 欧美高清性hdvideosex| 日韩不卡一区二区三区| 欧美久久高跟鞋激| 久久99久久99| 中文字幕精品一区| 不卡一区二区三区四区| xf在线a精品一区二区视频网站| 成人激情免费网站| 欧美视频在线观看一区| 国产午夜精品久久久久久久| 成人丝袜高跟foot| 午夜精品久久久久久久| 精品国产a毛片| 国产高清亚洲一区| 日韩视频免费观看高清完整版 | 欧美精品 国产精品| 国产欧美精品一区| 欧美电视剧免费观看| 91在线观看一区二区| 91麻豆国产福利在线观看| 亚洲国产精品激情在线观看| 欧美日本韩国一区| 国内精品在线播放| 国产在线播放一区三区四| 亚洲国产成人精品视频| 国产午夜精品一区二区三区嫩草| 欧美性三三影院| 日韩一区二区三区电影在线观看| 亚洲成av人片一区二区梦乃| 99久久精品国产网站| 亚洲一二三区不卡| 91成人网在线| 无吗不卡中文字幕| 欧美日韩免费电影| 91精品在线免费| 色菇凉天天综合网| 日韩一级片在线观看| 国产亚洲精品精华液| 一区av在线播放| 日韩经典一区二区| 青青草国产精品亚洲专区无| 欧美午夜精品久久久久久超碰 | 欧美性猛交xxxxxx富婆| 911精品国产一区二区在线| 日韩精品最新网址| 中文字幕欧美激情| 一区二区三区中文字幕电影 | 777亚洲妇女| 日韩精品一区在线| 亚洲乱码国产乱码精品精98午夜 | 国产在线播精品第三| 成人免费毛片片v| 色婷婷精品久久二区二区蜜臂av| 色综合久久综合| 亚洲欧美激情视频在线观看一区二区三区 | 久久精品亚洲麻豆av一区二区| 久久久激情视频| 激情综合网天天干| 久久久久久久精|