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

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

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

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

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

 驗證時機(jī):1、點擊提交按鈕時顯式調(diào)用驗證方法;2、當(dāng)元素觸發(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表單驗證插件,希望能夠幫助到大家。

相關(guān)文章

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

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

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

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

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

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

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

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

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

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

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

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

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

    js替代copy(示例代碼)

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

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

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

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

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

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

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

最新評論

南昌市| 肇源县| 德江县| 蒙山县| 临泉县| 鹰潭市| 灵台县| 肇东市| 漯河市| 顺义区| 阳春市| 凯里市| 武川县| 亚东县| 科尔| 留坝县| 孟村| 丹棱县| 靖安县| 晋中市| 喀什市| 漾濞| 贡觉县| 勐海县| 凤翔县| 志丹县| 五莲县| 汶上县| 临邑县| 武平县| 彰化市| 滨州市| 都兰县| 治县。| 松溪县| 毕节市| 牙克石市| 乌拉特中旗| 葫芦岛市| 呈贡县| 手游|