最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2021年10月15日 09:10:44   作者:秋荷雨翔  
這篇文章主要幫助大家擁有一個屬于自己的javascript表單驗證插件,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

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

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

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

插件代碼:

CSS:

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

JS:

/**
* 驗證插件
*/

SimpoValidate = {
 //驗證規(guī)則
 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;
 },

 //獲取驗證規(guī)則
 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="可為空,請?zhí)顚懻麛?shù)"></span>
 </td>
 </tr>
 <tr>
 <td>
 <input name="d" value="" type="text" />
 <span class="valid" rule="number" msg="必填,請?zhí)顚憯?shù)字"></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、執(zhí)行驗證JS代碼:

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

效果圖:

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

相關文章

  • JavaScript實現(xiàn)文本轉語音功能的完整步驟

    JavaScript實現(xiàn)文本轉語音功能的完整步驟

    這篇文章主要介紹了如何使用JavaScript和WebSpeechAPI快速實現(xiàn)一個簡單的文本轉語音Web應用,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2025-02-02
  • JavaScript中三種非破壞性處理數(shù)組的方法比較

    JavaScript中三種非破壞性處理數(shù)組的方法比較

    在這篇文章中,我們將會探索處理數(shù)組的三種方法:for…of循環(huán)、數(shù)組方法.reduce()和數(shù)組方法.flatMap(),文中的示例代碼講解詳細,感興趣的可以了解一下
    2023-06-06
  • JavaScript 動態(tài)三角函數(shù)實例詳解

    JavaScript 動態(tài)三角函數(shù)實例詳解

    本文通過實例代碼給大家實例講解了javascript動態(tài)三角函數(shù)知識,非常不錯,具有參考借鑒價值,需要的朋友參考下
    2017-01-01
  • 一篇文章教你寫出干凈的JavaScript代碼

    一篇文章教你寫出干凈的JavaScript代碼

    JavaScript一種直譯式腳本語言,是一種動態(tài)類型、弱類型、基于原型的語言,內置支持類型,下面這篇文章主要給大家介紹了如何通過一篇文章教你寫出干凈的JavaScript代碼,需要的朋友可以參考下
    2021-09-09
  • JS繪制微信小程序畫布時鐘

    JS繪制微信小程序畫布時鐘

    微信小程序官方組件也提供了畫布功能,下面分享一下如何創(chuàng)建微信小程序畫布時鐘
    2016-12-12
  • javascript動態(tài)添加、修改、刪除對象的屬性與方法詳解

    javascript動態(tài)添加、修改、刪除對象的屬性與方法詳解

    本篇文章主要是對javascript動態(tài)添加、修改、刪除對象的屬性與方法進行了介紹,需要的朋友可以過來參考下,希望對大家有所幫助
    2014-01-01
  • js替代copy(示例代碼)

    js替代copy(示例代碼)

    這篇文章主要是對js替代copy的示例代碼進行了介紹,需要的朋友可以過來參考下,希望對大家有所幫助
    2013-11-11
  • JavaScript數(shù)學對象(Math)方法舉例詳解

    JavaScript數(shù)學對象(Math)方法舉例詳解

    這篇文章主要給大家介紹了關于JavaScript數(shù)學對象(Math)方法的相關資料,Math(數(shù)學)對象的作用是執(zhí)行普通的算數(shù)任務,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2024-03-03
  • 基于JavaScript實現(xiàn)通用tab選項卡(通用性強)

    基于JavaScript實現(xiàn)通用tab選項卡(通用性強)

    選項卡在大量的網站都有應用,雖然形式各有不同,但是索要達成的目的都是一樣的,一般都是為了進行分類或者節(jié)省網頁空間只用,算是一件利器,下面就是一個選項卡的代碼實例,通用性很強,下面就和大家分享一下
    2016-01-01
  • JavaScript動畫原理之如何使用js進行動畫效果的實現(xiàn)

    JavaScript動畫原理之如何使用js進行動畫效果的實現(xiàn)

    在現(xiàn)在做頁面很多時候都會用上動畫效果,比如下拉菜單,側邊搜索欄,層的彈出與關閉等等,下面這篇文章主要給大家介紹了關于JavaScript動畫原理之如何使用js進行動畫效果實現(xiàn)的相關資料,需要的朋友可以參考下
    2023-04-04

最新評論

舒兰市| 邢台县| 文成县| 洪雅县| 鸡泽县| 汝阳县| 明溪县| 鄂伦春自治旗| 东丰县| 石泉县| 克东县| 蚌埠市| 上栗县| 三江| 泽库县| 田林县| 偏关县| 全州县| 准格尔旗| 楚雄市| 定兴县| 舟山市| 仁布县| 双柏县| SHOW| 怀远县| 连江县| 鄂托克旗| 鲜城| 沙雅县| 碌曲县| 宽城| 舟曲县| 和静县| 凤阳县| 齐齐哈尔市| 兴化市| 石阡县| 滦南县| 封丘县| 光泽县|