中文字幕免费精品_亚洲视频自拍_亚洲综合国产激情另类一区_色综合咪咪久久

JS實現支持Ajax驗證的表單插件
來源:易賢網 閱讀:1162 次 日期:2016-07-16 13:21:04
溫馨提示:易賢網小編為您整理了“JS實現支持Ajax驗證的表單插件”,方便廣大網友查閱!

本文為大家分享了一個表單驗證插件,支持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 () {

    $(".valid").each(function () { //遍歷span

      if ($(this)[0].tagName.toLowerCase() == "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 () {

    SimpoValidate.ajaxCheckResult = true;

    var bl = true;

    $(".valid").each(function () { //遍歷span

      if ($(this)[0].tagName.toLowerCase() == "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 && SimpoValidate.ajaxCheckResult;

  },

  //單個驗證,驗證成功返回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");

    var ajaxAction = validSpan.attr("ajaxAction");

    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;

          }

        }

        if (ajaxAction) {

          SimpoValidate.ajaxCheck(target, val, ajaxAction);

        }

      }

      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;

          }

        }

        if (ajaxAction) {

          SimpoValidate.ajaxCheck(target, val, ajaxAction);

        }

      }

    }

    return true;

  },

  ajaxCheckResult: true,

  ajaxCheck: function (target, value, ajaxAction) {

    var targetName = target.attr("name");

    var data = new Object();

    data[targetName] = value;

    $.ajax({

      url: ajaxAction,

      type: "POST",

      data: data,

      async: false,

      success: function (data) {

        if (data.data == true) {

          SimpoValidate.removehilight(target);

        }

        else {

          SimpoValidate.ajaxCheckResult = false;

          SimpoValidate.hilight(target, data.data);

        }

      }

    });

  },

  //獲取驗證規則

  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; z-index:99999; left: 0; top: 0; background-color: #dceaf2; padding: 3px; border: solid 1px #6dbde4; visibility: hidden; line-height:20px; font-size:12px;";

    $("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();

});

如何使用:

Edit頁面:

@using Model.Suya;

@{

  ViewBag.Title = "Add";

  Layout = "~/Views/Shared/_Layout.cshtml";

}

@{

  List<sys_post> postList = (List<sys_post>)ViewData["postList"];

  sys_post post = (sys_post)ViewData["post"];

}

<script type="text/javascript">

  $(function () {

    //部門樹

    $('#dept').combotree({

      url: 'GetDeptTree',

      required: false,

      checkbox: true,

      onLoadSuccess: function () {

        $('#dept').combotree('setValue', "@(post.depCode)");

      }

    });

    //操作結果

    $("#ifrm").load(function (data) {

      var data = eval("(" + $("#ifrm").contents().find("body").html() + ")");

      alert(data.msg);

      if (data.ok) back();

    });

    $("select[name='postLevel']").find("option[value='@(post.postLevel)']").attr("selected", "selected");

  });

  //保存

  function save() {

    if (valid()) {

      $("#frm").submit();

    }

  }

  //驗證

  function valid() {

    var dept = $("input[name='dept']");

    if (!dept.val()) {

      SimpoValidate.hilight(dept.parent(), "請選擇所屬部門");

    } else {

      SimpoValidate.removehilight(dept.parent());

    }

    return SimpoValidate.valid();

  }

  //返回

  function back() {

    parent.$('#ttTab').tabs('select', "崗位管理");

    var tab = parent.$('#ttTab').tabs('getSelected');

    tab.find("iframe").contents().find("#btnSearch").click();

    parent.$("#ttTab").tabs('close', '修改崗位信息');

  }

</script>

<div class="tiao">

  <input type="button" class="submit_btn" value="保存" onclick="save()" />

  <input type="button" class="submit_btn" value="返回" onclick="back()" />

</div>

<iframe id="ifrm" name="ifrm" style="display: none;"></iframe>

<form id="frm" method="post" enctype="multipart/form-data" action="/HR/PostManage/SaveEdit?id=@(post.id)"

target="ifrm">

<div class="adminMainContent">

  <div class="box">

    <div class="box-title">

      基礎信息

    </div>

    <div class="box-content">

      <table cellpadding="0" cellspacing="0" class="detail" width="100%">

        <tr>

          <td class="title">

            <span class="mst">*</span>崗位名稱:

          </td>

          <td style="width: 35%;">

            <input type="text" class="xinxi_txt" name="postName" value="@post.postName" />

            <span class="valid" msg="必填,且長度不能超過50" rule="^(.|\n){0,50}$"></span>

          </td>

          <td class="title">

            <span class="mst">*</span>崗位編號:

          </td>

          <td style="width: 35%;">

            <input type="text" class="xinxi_txt" name="postCode" value="@post.postCode" />

            <span class="valid" msg="必填,且長度不能超過20" rule="^(.|\n){0,20}$" ajaxaction="/HR/PostManage/AjaxCheckPostCode?id=@post.id">

            </span>

          </td>

        </tr>

        <tr>

          <td class="title">

            <span class="mst">*</span> 所屬部門:

          </td>

          <td style="width: 35%;">

            <input type="text" name="depCode" id="dept" class="easyui-combotree" style="height: 30px;" />

          </td>

          <td class="title">

            <span class="mst">*</span>匯報對象:

          </td>

          <td style="width: 35%;">

            <select class="xueli" name="reportPostCode" id="agreementType">

              <option value="" selected="selected">==請選擇==</option>

              @foreach (sys_post item in postList)

              {

                if (item.postCode == post.reportPostCode)

                {

                <option value="@item.postCode" selected="selected">@item.postName</option>

                }

                else

                {

                <option value="@item.postCode">@item.postName</option>

                }

              }

            </select>

            <span class="valid" msg="請選擇合同分類">

          </td>

        </tr>

        <tr>

          <td class="title">

            <span class="mst">*</span>崗位級別:

          </td>

          <td style="width: 35%;">

            <select class="xueli" name="postLevel">

              <option value="" selected="selected">==請選擇==</option>

              <option value="1">1</option>

              <option value="2">2</option>

              <option value="3">3</option>

              <option value="4">4</option>

              <option value="5">5</option>

              <option value="6">6</option>

            </select>

            <span class="valid" msg="請選擇崗位級別">

          </td>

          <td class="title">

          </td>

          <td style="width: 35%;">

          </td>

        </tr>

        <tr>

          <td class="title">

            <span class="mst">*</span>備注:

          </td>

          <td colspan="3" style="width: 35%;">

            <textarea name="remarks" style="width: 500px;">@post.remarks</textarea>

            <span class="valid" msg="長度不得超過500" rule="^(.|\n){0,500}$"></span>

          </td>

        </tr>

      </table>

    </div>

  </div>

</div>

</form>

效果圖:

名單

以上就是本文的全部內容,希望對大家的學習有所幫助。

更多信息請查看網絡編程
易賢網手機網站地址:JS實現支持Ajax驗證的表單插件
由于各方面情況的不斷調整與變化,易賢網提供的所有考試信息和咨詢回復僅供參考,敬請考生以權威部門公布的正式信息和咨詢為準!

2026上岸·考公考編培訓報班

  • 報班類型
  • 姓名
  • 手機號
  • 驗證碼
關于我們 | 聯系我們 | 人才招聘 | 網站聲明 | 網站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 新媒體/短視頻平臺 | 手機站點 | 投訴建議
工業和信息化部備案號:滇ICP備2023014141號-1 云南省教育廳備案號:云教ICP備0901021 滇公網安備53010202001879號 人力資源服務許可證:(云)人服證字(2023)第0102001523號
云南網警備案專用圖標
聯系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關注公眾號:hfpxwx
咨詢QQ:1093837350(9:00—18:00)版權所有:易賢網
云南網警報警專用圖標
中文字幕免费精品_亚洲视频自拍_亚洲综合国产激情另类一区_色综合咪咪久久
最新国产成人在线观看| 欧美日韩久久精品| 国产欧美一区二区精品性色| 久久综合色综合88| 欧美日韩亚洲一区二区三区| 亚洲精品国偷自产在线99热| 亚洲欧美日韩精品久久亚洲区| 伊人激情综合| 国产精品一卡| 欧美体内she精视频| 国产精品免费看| 亚洲综合精品| 欧美成人伊人久久综合网| 久久一二三国产| 欧美日本中文字幕| 国产区亚洲区欧美区| 91久久在线观看| 欧美亚洲免费在线| 欧美午夜一区二区| 亚洲欧洲日本一区二区三区| 欧美在线观看视频在线| 欧美视频精品在线观看| 91久久久久久久久| 久久夜色精品亚洲噜噜国产mv| 国产精品久久久久一区二区三区共 | 国产亚洲成人一区| 午夜精品一区二区在线观看| 亚洲高清不卡一区| 国产精品第一区| 欧美性一二三区| 影音国产精品| 欧美日韩视频一区二区三区| 国产亚洲欧美一区二区三区| 中文亚洲视频在线| 欧美成人免费大片| 在线成人黄色| 老司机免费视频久久| 黄色精品免费| 久久久精品一区| 国模大胆一区二区三区| 久久精精品视频| 国产午夜精品理论片a级探花| 亚洲一区在线播放| 欧美日韩少妇| 亚洲砖区区免费| 国产精品麻豆va在线播放| 亚洲午夜国产一区99re久久| 欧美日韩国产成人在线91| 亚洲第一精品影视| 欧美激情小视频| 亚洲一区二区在线播放| 国产精品免费观看视频| 欧美一区二区三区视频免费播放| 国产麻豆91精品| 欧美日精品一区视频| 亚洲日本无吗高清不卡| 欧美日韩在线播放| 欧美亚洲一区二区在线| 精品成人乱色一区二区| 欧美精品在线免费观看| 亚洲欧美激情四射在线日| 精品av久久久久电影| 欧美体内she精视频| 久久久久久久999精品视频| 亚洲国产日韩在线一区模特| 欧美日韩理论| 久久久久高清| 一区二区三区成人精品| 国产一区二区在线免费观看| 久久久精品2019中文字幕神马| 国产精品一区一区| 亚洲欧美国产另类| 尤妮丝一区二区裸体视频| 欧美激情片在线观看| 亚洲影院免费观看| 亚洲国产精品黑人久久久 | 亚洲欧美国产精品桃花| 国产永久精品大片wwwapp| 欧美成人精品在线视频| 欧美在线视频全部完| 亚洲另类黄色| 国内成人精品视频| 国产精品日韩高清| 欧美日韩国产精品专区| 欧美.日韩.国产.一区.二区| 午夜一区在线| 亚洲天堂第二页| 亚洲精品综合久久中文字幕| 国产午夜精品视频免费不卡69堂| 欧美三级不卡| 欧美日韩精品一区二区三区四区| 久久人人精品| 久久精品视频在线看| 亚洲日本成人女熟在线观看| 黄色成人在线观看| 国内外成人在线视频| 国产精品一区一区三区| 欧美—级在线免费片| 老司机成人在线视频| 欧美在线免费看| 久久国产精品免费一区| 亚洲一二三区精品| 亚洲精品欧美| 最新国产拍偷乱拍精品| 亚洲黄色性网站| 国产女人水真多18毛片18精品视频| 欧美午夜视频| 国产精品推荐精品| 国产精品久久久久久影视| 欧美午夜宅男影院在线观看| 欧美精品日韩一本| 欧美激情精品久久久久久久变态| 欧美国产第一页| 久久综合九色综合网站| 免费日韩精品中文字幕视频在线| 嫩草成人www欧美| 牛牛精品成人免费视频| 欧美大片专区| 欧美午夜电影一区| 欧美午夜视频一区二区| 国产精品欧美日韩久久| 国产精品免费福利| 国产日韩欧美二区| 亚洲风情亚aⅴ在线发布| 亚洲三级免费| 亚洲精品影院在线观看| 日韩午夜av电影| 一本大道久久精品懂色aⅴ| 一区二区三区成人| 亚洲欧美伊人| 欧美777四色影视在线| 欧美激情在线狂野欧美精品| 欧美美女日韩| 国产精品毛片va一区二区三区| 国产伦精品一区二区三区高清版| 激情欧美一区二区三区| 亚洲激情网站| 亚洲视频久久| 久久久久久久久久看片| 欧美日韩一区二区三| 精品av久久707| 亚洲一区二区成人| 玖玖综合伊人| 欧美视频福利| 亚洲国产综合在线| 亚洲欧美第一页| 欧美激情中文字幕一区二区| 国产欧美一区二区三区另类精品| 亚洲激情视频网| 久久国产视频网站| 欧美涩涩网站| 亚洲激情第一区| 久久不射网站| 欧美性天天影院| 亚洲激情第一页| 久久久99精品免费观看不卡| 欧美小视频在线| 亚洲激情图片小说视频| 久久九九99视频| 国产精品成人免费| 在线观看视频一区二区欧美日韩| 亚洲女同性videos| 欧美精品三级日韩久久| 亚洲国产精品一区二区第一页| 欧美自拍偷拍午夜视频| 国产精品美女久久久久aⅴ国产馆| 一区二区在线视频观看| 久久成人综合视频| 国产九九精品| 香蕉久久夜色精品国产| 国产精品久久久久久亚洲毛片| 99伊人成综合| 国产精品久久国产三级国电话系列 | 国产日韩一区二区| 亚洲高清毛片| 久久婷婷av| 激情欧美日韩一区| 另类av导航| 亚洲国产成人精品久久| 久久婷婷综合激情| 国产在线精品二区| 久久久久欧美精品| 亚洲第一福利视频| 欧美国产欧美亚洲国产日韩mv天天看完整| 国产欧美一区二区三区久久| 亚洲午夜精品一区二区三区他趣| 欧美网站在线观看| 性欧美18~19sex高清播放| 国产精品夜夜夜一区二区三区尤| 午夜伦欧美伦电影理论片| 国产视频亚洲精品| 久久这里只有精品视频首页| 在线看不卡av| 蜜桃久久精品一区二区| 亚洲精品乱码久久久久久黑人| 欧美成人免费观看| 中文日韩电影网站| 国产一区视频在线观看免费| 久久久水蜜桃av免费网站| 亚洲高清一二三区|