css&javascript 「加入會員」驗證資料及亂數產生驗證碼
網站中加入會員應該是必預的
yahoo、google、hotmail、pchome,各大網站都有這個
現只針對網頁上格式進行驗證,所有驗證都寫在一個function裡
只要有不符合,就記下警示訊息,在按下加入會員後會跳出警告視窗
規則是只要警示訊息裡有文字,就是有錯
特別的地方有2個:
由於驗證碼的答案是存在cookie中,要在網頁中撈出cookie
除了原本的jquery的函式庫外,另外要再抓jquery.cooke的函式庫
用javascript也可以抓cookie,不過jquery真的比較方便就是了
驗證圖會參考之前C#做的亂數驗證圖
抓出該dll檔後引入參考,並用ashx泛式的方式來戴入引用:
接著是script語法,驗證圖及鄉鎮的應用
$(document).ready的function中最後有檢驗表單
驗證各欄位的function:
yahoo、google、hotmail、pchome,各大網站都有這個
現只針對網頁上格式進行驗證,所有驗證都寫在一個function裡
只要有不符合,就記下警示訊息,在按下加入會員後會跳出警告視窗
規則是只要警示訊息裡有文字,就是有錯
特別的地方有2個:
- 選擇縣市
- 驗證圖及檢驗輸入是否對應驗證碼
由於驗證碼的答案是存在cookie中,要在網頁中撈出cookie
除了原本的jquery的函式庫外,另外要再抓jquery.cooke的函式庫
用javascript也可以抓cookie,不過jquery真的比較方便就是了
<script src="/scripts/jquery-1.11.1.min.js"></script> <script src="scripts/jquery.cookie.js"></script>
驗證圖會參考之前C#做的亂數驗證圖
抓出該dll檔後引入參考,並用ashx泛式的方式來戴入引用:
public void ProcessRequest(HttpContext context) { Vaild.VaildNum vn = new Vaild.VaildNum(8);//引用驗證亂數產生8字元 String Code = vn.VaildNumAnswer;//驗證的答案 Bitmap bmp = vn.VaildNumImage; //產生出來的圖 System.IO.MemoryStream ms = new System.IO.MemoryStream();//new出在伺服器的記憶體 bmp.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg); //以jpeg的方式存入 HttpCookie cc = new HttpCookie("Code");//new 個cookie,key為"Code" cc.Value = Code; cc.Expires = DateTime.Now.AddMonths(3);//到期日為本日加3個月 context.Response.Cookies.Add(cc); //將cookie加到使用者的瀏覽器 byte[] bb = ms.ToArray();//將記憶體轉為byte陣列 context.Response.OutputStream.Write(bb, 0, bb.Length);//寫回 }
接著是script語法,驗證圖及鄉鎮的應用
$(document).ready的function中最後有檢驗表單
var address;//預計放入地址的xml檔案 var confirm;//預計存方驗證圖的答案 $(document).ready(function () { $("#RefreshVaildImgBtn").click(function () { $("#VaildNumImg").attr("src" , "/Tools/GetVaildImage.ashx?tt=" + new Date().getTime()); //亂數的泛式ashx,確認不會載入預存的網頁加new Date confirm = $.cookie("Code");//驗證碼存在cookie中 }); //Ajax載入地址的xml $.get("/Tools/Address.xml", null, LoadCounty); //縣市變更時,載入鄉鎮 $("#County").change(LoadRegion); //按下確認時,檢驗表單 $("#SubmitBtn").click(CheckForm); }); //載入縣市,xx是Ajax載入的xml檔案 function LoadCounty(xx) { address = xx; $(address).find("County").each(function () {//找出這xml檔案中,每個County也就是縣市 var vv = $(this).attr("Name");//抓出County的Name屬性 var s = "";//以html選項的原始碼包起來 $(s).appendTo("#County");//加上在網頁id為County的列表 }); } //載入鄉鎮 function LoadRegion() { $("#Region").empty();//先清空鄉鎮的資料 $("").appendTo("#Region");//加第1筆「--請選擇--」 var cc = $("#County").val();//抓出縣市的value if (cc == "--請選擇--") return;//若縣市是「--請選擇--」則離開此function $(address).find("County[Name=\"" + cc + "\"]").children().each(function () { //找出County為cc的元素,鄉鎮是該元素的子元素 //所以要children(),每個都要用each() var vv = $(this).attr("Name"); var s = ""; $(s).appendTo("#Region"); }); }
驗證各欄位的function:
function CheckForm() { var msg = "";//警告訊息 var regx = "";//驗證規則 //帳號驗證------------------------------------------- regx = /^[A-Za-z]\w{1,20}$/; if ($("#Account").val().length == 0) msg += "* 請一定要填寫申請帳號!\n"; else if (!regx.test($("#Account").val())) msg += "* 請填寫正確的帳號!\n"; //密碼驗證------------------------------------------- if ($("#Password").val().length == 0) msg += "* 請一定要填寫密碼!\n"; if ($("#ConfirmPassword").val().length == 0) msg += "* 請再次輸入欲使用的密碼!\n"; else if ($("#Password").val() != $("#ConfirmPassword").val()) msg += "* 兩次輸入的密碼不相符!\n"; //性別驗證------------------------------------------- var c1=$("#Sex_Male").prop("checked")?true:false; var c2=$("#Sex_Female").prop("checked")?true:false; if (!(c1 || c2)) msg += "* 請選擇性別\n"; //信箱驗證------------------------------------------- regx = /^\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/; if ($("#EMail").val().length == 0) msg += "* 請一定要填寫電子郵件\n"; else if (!regx.test($("#EMail").val())) msg += "* 請填寫正確的電子郵件\n"; //驗證碼--------------------------------------------- if ($("#VaildAnsText").val().length == 0) msg += "* 請一定要填寫驗證碼!\n"; else if ($("#VaildAnsText").val() != $.cookie("Code")) msg += "* 請填寫正確的驗證碼!\n"; //警告訊息裡有文字就跳出警告視窗 if (msg != "") { alert(msg); return false; } else { $("#form1").submit(); } }
留言
張貼留言