亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

擁有一個屬于自己的javascript表單驗證插件

2019-11-20 10:21:01
字體:
來源:轉載
供稿:網友

自己編寫了一個表單驗證插件,使用起來很簡單,以后還可以擴展更多的功能,比如ajax驗證。

每個需要驗證的表單元素下面有一個span標簽,這個標簽的class有一個valid表示需要驗證,如果有nullable則表示可為空;rule表示驗證規則,msg表示錯誤提示信息;to表示要驗證的元素的name值,如果元素是單個的,to可以不寫。該插件會遍歷每個有valid的span標簽,找出它前面需要驗證的元素,根據rule驗證,如果驗證不通過,則顯示邊框為紅色,鼠標放在元素上時顯示錯誤信息。

 驗證時機:1、點擊提交按鈕時顯式調用驗證方法;2、當元素觸發blur時驗證。

插件代碼:

CSS:

.failvalid{ border: solid 2px red !important;}

JS:

/*** 驗證插件*/SimpoValidate = { //驗證規則 rules: { int: /^[1-9]/d*$/, number: /^[+-]?/d*/.?/d+$/ }, //初始化 init: function () { $("span[class*='valid']").each(function () { //遍歷span var validSpan = $(this); var to = validSpan.attr("to"); var target; if (to) { target = $("input[name='" + to + "'],select[name='" + to + "'],textarea[name='" + to + "']"); } else { var target = validSpan.prev(); } if (target) { target.blur(function () {  SimpoValidate.validOne(target, validSpan); }); } }); }, //驗證全部,驗證成功返回true valid: function () { var bl = true; $("span[class*='valid']").each(function () { //遍歷span var validSpan = $(this); var to = validSpan.attr("to"); var target; if (to) { target = $("input[name='" + to + "'],select[name='" + to + "'],textarea[name='" + to + "']"); } else { target = validSpan.prev(); } if (target) { if (!SimpoValidate.validOne(target, validSpan)) {  bl = false; } } }); return bl; }, //單個驗證,驗證成功返回true validOne: function (target, validSpan) { SimpoValidate.removehilight(target, msg); var rule = SimpoValidate.getRule(validSpan); var msg = validSpan.attr("msg"); var nullable = validSpan.attr("class").indexOf("nullable") == -1 ? false : true; //是否可為空 var to = validSpan.attr("to"); if (target) { //checkbox或radio if (target[0].tagName.toLowerCase() == "input" && target.attr("type") && (target.attr("type").toLowerCase() == "checkbox" || target.attr("type").toLowerCase() == "radio")) { var checkedInput = $("input[name='" + to + "']:checked"); if (!nullable) {  if (checkedInput.length == 0) {  SimpoValidate.hilight(target, msg);  return false;  } } } //input或select if (target[0].tagName.toLowerCase() == "input" || target[0].tagName.toLowerCase() == "select") { var val = target.val(); if (!nullable) {  if ($.trim(val) == "") {  SimpoValidate.hilight(target, msg);  return false;  } } else {  if ($.trim(val) == "") {  SimpoValidate.removehilight(target, msg);  return true;  } } if (rule) {  var reg = new RegExp(rule);  if (!reg.test(val)) {  SimpoValidate.hilight(target, msg);  return false;  } } } else if (target[0].tagName.toLowerCase() == "textarea") { var val = target.text(); if (!nullable) {  if ($.trim(val) == "") {  SimpoValidate.hilight(target, msg);  return false;  } } else {  if ($.trim(val) == "") {  SimpoValidate.removehilight(target, msg);  return true;  } } if (rule) {  var reg = new RegExp(rule);  if (!reg.test(val)) {  SimpoValidate.hilight(target, msg);  return false;  } } } } return true; }, //獲取驗證規則 getRule: function (validSpan) { var rule = validSpan.attr("rule"); switch ($.trim(rule)) { case "int": return this.rules.int; case "number": return this.rules.number; default: return rule; break; } }, //紅邊框及錯誤提示 hilight: function (target, msg) { target.addClass("failvalid"); target.bind("mouseover", function (e) { SimpoValidate.tips(target, msg, e); }); target.bind("mouseout", function () { SimpoValidate.removetips(); }); }, //取消紅邊框及錯誤提示 removehilight: function (target) { target.unbind("mouseover"); target.unbind("mouseout"); target.removeClass("failvalid"); SimpoValidate.removetips(); }, //顯示提示 tips: function (target, text, e) { var divtipsstyle = "position: absolute; left: 0; top: 0; background-color: #dceaf2; padding: 3px; border: solid 1px #6dbde4; visibility: hidden; line-height:20px; "; $("body").append("<div class='div-tips' style='" + divtipsstyle + "'>" + text + "</div>"); var divtips = $(".div-tips"); divtips.css("visibility", "visible"); var top = e.clientY + $(window).scrollTop() - divtips.height() - 18; var left = e.clientX; divtips.css("top", top); divtips.css("left", left); $(target).mousemove(function (e) { var top = e.clientY + $(window).scrollTop() - divtips.height() - 18; var left = e.clientX; divtips.css("top", top); divtips.css("left", left); }); }, //移除提示 removetips: function () { $(".div-tips").remove(); }};$(function () { SimpoValidate.init();});

如何使用:

1、引用CSS和JS(必須引用jQuery):

<link type="text/css" href="~/Scripts/SimpoValidate.css" rel="stylesheet" /><script type="text/javascript" src="~/Scripts/jquery-1.8.2.js"></script><script type="text/javascript" src="~/Scripts/ValidateUtil.js"></script>

2、表單HTML代碼(部分代碼):

<table class="table-test" cellpadding="0" cellspacing="0" style="border-collapse: collapse; width: 100%;"> <tr> <td> <input name="c" value="" type="text" /> <span class="valid nullable" rule="int" msg="可為空,請填寫正整數"></span> </td> </tr> <tr> <td> <input name="d" value="" type="text" /> <span class="valid" rule="number" msg="必填,請填寫數字"></span> </td> </tr> <tr> <td> <select> <option value="-1">==請選擇==</option> <option value="1">是</option> <option value="2">否</option> </select> <span class="valid" rule="^(?!-1$).+$" msg="必選"></span> </td> </tr> <tr> <td> <input name="a" value="1" type="checkbox" /> <span>多</span> <input name="a" value="2" type="checkbox" /> <span>少</span> <span class="valid" rule="" msg="必選" to="a"></span> </td> </tr> <tr> <td> <input name="b" value="1" type="radio" /> <span>狗</span> <input name="b" value="2" type="radio" /> <span>貓</span> <span class="valid" rule="" msg="必選" to="b"></span> </td> </tr> <tr> <td> <textarea cols="20" rows="5" style="height: 50px; width: 300px;"></textarea> <span class="valid nullable" rule="^(.|/n){5,100}$" msg="可為空,長度必須大于等于5小于等于100"></span> </td> </tr></table>

3、執行驗證JS代碼:

//保存數據function save() { if (SimpoValidate.valid()) { //執行驗證 $("#frm").submit(); //提交表單 }}

效果圖:

以上就是作者自己動手編寫的javascript表單驗證插件,希望能夠幫助到大家。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩精品在线第一页| 97在线视频免费观看| 欧美裸体男粗大视频在线观看| 日韩小视频在线观看| 欧美日韩成人在线播放| 麻豆国产精品va在线观看不卡| 精品国产精品三级精品av网址| 日本一欧美一欧美一亚洲视频| 97国产成人精品视频| 亚洲精品国产电影| xxx欧美精品| 日韩a**站在线观看| 国产亚洲精品美女久久久久| 亚洲第一精品久久忘忧草社区| 欧美精品www| 精品国偷自产在线| 亚洲欧美在线免费| 日韩欧美亚洲成人| 国产精品久久久久77777| 亚洲综合社区网| 国产成人福利夜色影视| 亚洲第一国产精品| 色婷婷综合成人| 久久久久久久久久国产| 精品免费在线视频| 国产精品一区二区三区毛片淫片| 亚洲成avwww人| 国产在线a不卡| 国产精品第一视频| 亚州国产精品久久久| 亚洲色图第三页| 一区二区三区视频在线| 国产成人短视频| 欧美午夜激情小视频| 欧美国产第二页| 亚洲国产91精品在线观看| 精品久久久久久久久久ntr影视| 中文字幕av一区二区| 美女久久久久久久| 日韩美女视频在线观看| 久久国产精品免费视频| 欧美日韩视频免费播放| 亚洲iv一区二区三区| 日韩美女av在线| 日本久久亚洲电影| 美女啪啪无遮挡免费久久网站| 久久精品视频免费播放| 2019精品视频| 日本精品久久久| 美日韩精品视频免费看| 久久夜色精品国产| 亚洲自拍偷拍色片视频| 日韩精品极品视频| 亚洲一区二区三区视频播放| 亚洲高清av在线| 91在线精品视频| 欧美激情视频三区| 亚洲综合精品伊人久久| 欧美成人精品一区二区| 26uuu另类亚洲欧美日本一| 97精品国产97久久久久久| 久久精品成人一区二区三区| 久久精品青青大伊人av| 国产成人亚洲精品| 国产成人高清激情视频在线观看| 欧美亚洲在线观看| 色悠久久久久综合先锋影音下载| 亚洲第一视频网站| 国产一区二区欧美日韩| 国产欧美一区二区三区四区| 日韩国产在线看| 亚洲欧美日韩国产精品| 欧美激情免费视频| 国产精品高清免费在线观看| 成人a在线观看| 欧美午夜无遮挡| 国产精品久久久久一区二区| 亚洲最大的av网站| 国产精品久久91| 亚洲欧美在线免费观看| 日韩av在线网址| 久久在线视频在线| 亚洲大胆人体在线| 国产日韩欧美成人| 一区二区三区久久精品| 国产精品免费久久久| 中文字幕免费国产精品| 中文字幕亚洲欧美| 精品国产一区二区三区四区在线观看| 欧美日韩成人在线播放| 亚洲国产免费av| 国产免费一区视频观看免费| 久久久久久久久久久免费| 国产高清在线不卡| 欧美老少配视频| 91精品国产综合久久香蕉最新版| 午夜精品一区二区三区在线视| 国产精品久久精品| 国产精品极品美女粉嫩高清在线| 亚洲天堂网在线观看| 国产精品h片在线播放| 欧美精品久久久久久久久久| 国产日韩精品电影| 欧美成人午夜激情视频| 亚洲高清在线观看| 中文字幕亚洲一区二区三区五十路| 一夜七次郎国产精品亚洲| 成人免费观看49www在线观看| 97视频在线观看视频免费视频| 日韩欧美aⅴ综合网站发布| 亚洲一区免费网站| 国产精品视频永久免费播放| 日韩人体视频一二区| 亚洲天堂免费观看| 在线观看欧美日韩| 国产这里只有精品| 欧美日韩激情视频| 国产精品福利在线观看网址| 韩国欧美亚洲国产| 国产69久久精品成人看| 亚洲欧美国产高清va在线播| 亚洲aⅴ日韩av电影在线观看| 国产热re99久久6国产精品| 91精品在线一区| 亚洲欧美激情另类校园| www亚洲欧美| 久久免费少妇高潮久久精品99| 欧美视频精品一区| 欧美又大又硬又粗bbbbb| 欧美大片网站在线观看| 亚洲精品97久久| 亚洲欧洲av一区二区| 色综合久久中文字幕综合网小说| www.亚洲一二| 欧美日韩精品二区| 欧美成人亚洲成人日韩成人| 日日狠狠久久偷偷四色综合免费| 成人免费看黄网站| 狠狠躁夜夜躁人人爽天天天天97| 亚洲色图校园春色| 国产精品大陆在线观看| 国产精品亚洲精品| 日韩欧美国产黄色| 欧美极品第一页| 中文字幕日韩免费视频| 国产精品美女久久久久av超清| 欧美激情欧美激情在线五月| 亚洲aⅴ男人的天堂在线观看| 懂色av影视一区二区三区| 午夜欧美不卡精品aaaaa| 日韩一区二区精品视频| 在线国产精品播放| 亚洲在线观看视频| 亚洲视频777| 国产视频精品在线| 日本欧美一二三区| 午夜欧美大片免费观看| 亚洲成**性毛茸茸| 亚洲成人网久久久| 亚洲欧美激情另类校园| 97久久久免费福利网址| 日韩欧美大尺度| 91久久精品国产91久久| 国产香蕉精品视频一区二区三区|