bootstrapValidator驗證

来源:https://www.cnblogs.com/Ai-Hen-Jiao-zhi/archive/2018/09/04/9582415.html
-Advertisement-
Play Games

bootstrapValidator驗證大全 添加到js上 註:以下參數上面的賦值都為預設值,不添加該參數即使用預設值 定義自定義驗證規則 該規則是拓展插件的validators方法。 我將項目中常用的方法放到了一個單獨js中,也就是上面第一步引用的自定義方法。 使用方法如下: 常用事件 1、重置某 ...


 bootstrapValidator驗證大全

    <meta name='viewport' content='width=device-width, initial-scale=1'>");
out.println("<link href='" + path + "bootstrap3/css/bootstrap.min.css' rel='stylesheet' type='text/css'/>");
out.println("<link href='" + path + "bootstrap3/css/bootstrap-theme.min.css' rel='stylesheet' type='text/css'/>");
out.println("<link href='" + path + "bootstrap3/css/bootstrapValidator.min.css' rel='stylesheet' type='text/css'/>");
out.println("<script type='text/javascript' src='" + path + "bootstrap3/js/jquery.min.js'></script>");
out.println("<script type='text/javascript' src='" + path + "bootstrap3/js/bootstrap.min.js'></script>");
out.println("<script type='text/javascript' src='" + path + "bootstrap3/js/bootstrapValidator.min.js'></script>");


<jsp:include page="../../bootstrap3/bootstrap.jsp"></jsp:include> <script rel="stylesheet"> $(function () { $('form').bootstrapValidator({ live: 'enabled',//驗證時機,enabled是內容有變化就驗證(預設),disabled和submitted是提交再驗證 excluded: [':disabled', ':hidden', ':not(:visible)'],//排除無需驗證的控制項,比如被禁用的或者被隱藏的 // submitButtons: '#subtn',//指定提交按鈕,如果驗證失敗則變成disabled,但我沒試成功,反而加了這句話非submit按鈕也會提交到action指定頁面 message: '通用的驗證失敗消息',//特殊處理會用到 feedbackIcons: { valid: 'glyphicon glyphicon-ok', invalid: 'glyphicon glyphicon-remove', validating: 'glyphicon glyphicon-refresh' }, fields: { username: { message: '賬號驗證失敗', validators: { notEmpty: { message: '賬號不能為空' }, stringLength: { min: 6, max: 18, message: '賬號長度必須為6到18之間' }, regexp: { regexp: /^[a-zA-Z0-9_]+$/, message: '賬號只能包含大寫、小寫、數字和下劃線' } } }, phone: { message: '電話無效', validators: { notEmpty: { message: '手機號碼不能為空' }, stringLength: { min: 11, max: 11, message: '請輸入11位手機號碼' }, regexp: { regexp: /^1[3|5|7|8]{1}[0-9]{9}$/, message: '請輸入正確的手機號碼' } } }, verificationCode: { validators: { notEmpty: { message: '驗證碼不能為空' } } }, password: { message: '密碼無效', validators: { notEmpty: { message: '密碼不能為空' }, stringLength: { min: 6, max: 18, message: '長度必須在6到30之間' }, identical: {//相同 field: 'repassword', //需要進行比較的input name值 message: '兩次密碼不一致' }, different: {//不能和用戶名相同 field: 'username',//需要進行比較的input name值 message: '不能和用戶名相同' }, regexp: { regexp: /^[a-zA-Z0-9_\.]+$/, message: '用戶名只能由字母、數字、點和下劃線組成' } } }, repassword: { message: '密碼無效', validators: { notEmpty: { message: '密碼不能為空' }, stringLength: { min: 6, max: 30, message: '長度必須在6到30之間' }, identical: {//相同 field: 'password', message: '兩次密碼不一致' }, different: {//不能和用戶名相同 field: 'username', message: '不能和用戶名相同' }, regexp: {//匹配規則 regexp: /^[a-zA-Z0-9_\.]+$/, message: '用戶名只能由字母、數字、點和下劃線組成' } } }, nickname: { validators: { notEmpty: { message: '昵稱不能為空' } } }, email: { validators: { notEmpty: { message: '郵箱地址不能為空' }, emailAddress: { message: '請輸入正確的郵件地址' } } }, fields: { datetimeStart: { trigger: "change", validators: { notEmpty: { message: '請選擇開始時間' } } }, datetimeEnd: {//日期驗證 trigger: "change", validators: { notEmpty: { message: '請選擇結束時間' }, callback: { message: '開始時間必須小於結束時間', callback: function (value, validator, $field) { let other = validator.getFieldElements('datetimeStart').val();//獲得另一個的值 let start = new Date(other.replace("-", "/").replace("-", "/")); let end = new Date(value.replace("-", "/").replace("-", "/")); if (start <= end) { return true; } return false; } } } }, } } }); }).on('success.form.bv', function (e) { // 防止表單提交 e.preventDefault(); // 獲取表單實例 var $form = $(e.target); // 獲取BooTrasPalpDealver實例 var bv = $form.data('bootstrapValidator'); // 使用AJAX提交表單數據 $.post('/toback', function (data) { if (data.Status == "ok") { window.location.href = "/toback"; } else if (data.Status == "error") { alert(data.Message); } else { alert("未知錯誤"); } ; }); }) </script>

 

添加到js上

註:以下參數上面的賦值都為預設值,不添加該參數即使用預設值

$(formSelector).bootstrapValidator({
    /**
    *  指定不驗證的情況
    *  值可設置為以下三種類型:
    *  1、String  ':disabled, :hidden, :not(:visible)'
    *  2、Array  預設值  [':disabled', ':hidden', ':not(:visible)']
    *  3、帶回調函數  
        [':disabled', ':hidden', function($field, validator) {
            // $field 當前驗證欄位dom節點
            // validator 驗證實例對象 
            // 可以再次自定義不要驗證的規則
            // 必須要return,return true or false; 
            return !$field.is(':visible');
        }]
    */
    excluded: [':disabled', ':hidden', ':not(:visible)'],
    /**
    * 指定驗證後驗證欄位的提示字體圖標。(預設是bootstrap風格)
    * Bootstrap 版本 >= 3.1.0
    * 也可以使用任何自定義風格,只要引入好相關的字體文件即可
    * 預設樣式 
        .form-horizontal .has-feedback .form-control-feedback {
            top: 0;
            right: 15px;
        }
    * 自定義該樣式覆蓋預設樣式
        .form-horizontal .has-feedback .form-control-feedback {
            top: 0;
            right: -15px;
        }
        .form-horizontal .has-feedback .input-group .form-control-feedback {
            top: 0;
            right: -30px;
        }
    */
    feedbackIcons: {
        valid: 'glyphicon glyphicon-ok',
        invalid: 'glyphicon glyphicon-remove',
        validating: 'glyphicon glyphicon-refresh'
    },
    /**
    * 生效規則(三選一)
    * enabled 欄位值有變化就觸發驗證
    * disabled,submitted 當點擊提交時驗證並展示錯誤信息
    */
    live: 'enabled',
    /**
    * 為每個欄位指定通用錯誤提示語
    */
    message: 'This value is not valid',
    /**
    * 指定提交的按鈕,例如:'.submitBtn' '#submitBtn'
    * 當表單驗證不通過時,該按鈕為disabled
    */
    submitButtons: 'button[type="submit"]',
    /**
    * submitHandler: function(validator, form, submitButton) {
    *   //validator: 表單驗證實例對象
    *   //form  jq對象  指定表單對象
    *   //submitButton  jq對象  指定提交按鈕的對象
    * }
    * 在ajax提交表單時很實用
    *   submitHandler: function(validator, form, submitButton) {
            // 實用ajax提交表單
            $.post(form.attr('action'), form.serialize(), function(result) {
                // .自定義回調邏輯
            }, 'json');
         }
    * 
    */
    submitHandler: null,
    /**
    * 為每個欄位設置統一觸發驗證方式(也可在fields中為每個欄位單獨定義),預設是live配置的方式,數據改變就改變
    * 也可以指定一個或多個(多個空格隔開) 'focus blur keyup'
    */
    trigger: null,
    /**
    * Number類型  為每個欄位設置統一的開始驗證情況,當輸入字元大於等於設置的數值後才實時觸發驗證
    */
    threshold: null,
    /**
    * 表單域配置
    */
    fields: {
        //多個重覆
        <fieldName>: {
            //隱藏或顯示 該欄位的驗證
            enabled: true,
            //錯誤提示信息
            message: 'This value is not valid',
            /**
            * 定義錯誤提示位置  值為CSS選擇器設置方式
            * 例如:'#firstNameMeg' '.lastNameMeg' '[data-stripe="exp-month"]'
            */
            container: null,
            /**
            * 定義驗證的節點,CSS選擇器設置方式,可不必須是name值。
            * 若是id,class, name屬性,<fieldName>為該屬性值
            * 若是其他屬性值且有中劃線鏈接,<fieldName>轉換為駝峰格式  selector: '[data-stripe="exp-month"]' =>  expMonth
            */
            selector: null,
            /**
            * 定義觸發驗證方式(也可在fields中為每個欄位單獨定義),預設是live配置的方式,數據改變就改變
            * 也可以指定一個或多個(多個空格隔開) 'focus blur keyup'
            */
            trigger: null,
            // 定義每個驗證規則
            validators: {
                //多個重覆
                //官方預設驗證參照  http://bv.doc.javake.cn/validators/
                // 註:使用預設前提是引入了bootstrapValidator-all.js
                // 若引入bootstrapValidator.js沒有提供常用驗證規則,需自定義驗證規則哦
                <validatorName>: <validatorOptions>
            }
        }
    }
});

定義自定義驗證規則

該規則是拓展插件的validators方法。 
我將項目中常用的方法放到了一個單獨js中,也就是上面第一步引用的自定義方法。

使用方法如下:

(function($) {
    //自定義表單驗證規則
    $.fn.bootstrapValidator.validators = {
        <validatorName> : {
            /**
             * @param {BootstrapValidator} 表單驗證實例對象
             * @param {jQuery} $field jQuery 對象
             * @param {Object} 表單驗證配置項值
             * @returns {boolean}
             */
            validate: function(validator, $field, options) {
                // 表單輸入的值
                // var value = $field.val();

                //options為<validatorOptions>對象,直接.獲取需要的值

                // 返回true/false
                //也可返回{ valid : true/false, message: 'XXXX'}
                return reg.test( $field.val() );

            }
        },
    };
}(window.jQuery))

 

常用事件

1、重置某一單一驗證欄位驗證規則

$(formName).data(“bootstrapValidator”).updateStatus("fieldName",  "NOT_VALIDATED",  null );

2、重置表單所有驗證規則

$(formName).data("bootstrapValidator").resetForm();

3、手動觸發表單驗證
//觸發全部驗證
$(formName).data(“bootstrapValidator”).validate();
//觸髮指定欄位的驗證
$(formName).data(“bootstrapValidator”).validateField('fieldName');

4、獲取當前表單驗證狀態

// flag = true/false 
var flag = $(formName).data(“bootstrapValidator”).isValid();

 

5、根據指定欄位名稱獲取驗證對象

// element = jq對象 / null
var element = $(formName).data(“bootstrapValidator”).getFieldElements('fieldName');

 

表單提交

1、當提交按鈕是普通按鈕 
手動觸發表單驗證 
示例:

 $("buttonName").on("click", function(){
     //獲取表單對象
    var bootstrapValidator = form.data('bootstrapValidator');
        //手動觸發驗證
        bootstrapValidator.validate();
        if(bootstrapValidator.isValid()){
            //表單提交的方法、比如ajax提交
        }
});

 

2、當提交按鈕的[type=”submit”]時 
會在success之前自動觸發表單驗證

var bootstrapValidator = form.data('bootstrapValidator');
bootstrapValidator.on('success.form.bv', function (e) {
    e.preventDefault();
    //提交邏輯
});

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 今日內容介紹 1.MySQL資料庫 2.SQL語句 01資料庫概念 A: 什麼是資料庫 資料庫就是存儲數據的倉庫,其本質是一個文件系統,數據按照特定的格式將數據存儲起來, 用戶可以對資料庫中的數據進行增加,修改,刪除及查詢操作。 B: 什麼是資料庫管理系統 資料庫管理系統(DataBase Mana ...
  • 一、簡介 pt-query-digest是用於分析mysql慢查詢的一個工具,它可以分析binlog、General log、slowlog,也可以通過SHOWPROCESSLIST或者通過tcpdump抓取的MySQL協議數據來進行分析。可以把分析結果輸出到文件中,分析過程是先對查詢語句的條件進行 ...
  • 1、平臺: Windows10 Pycharm 2018.1 Python 3.6.4 2、問題: 我在Pycharm下建立一個flask_ab工程,導入包: 運行時報錯:“ImportError: No module named flask_sqlalchemy” 3、解決方案: 打開File-> ...
  • 字元串作為OC語言的基本對象類型,被我們在各種地方廣泛使用,因此熟悉掌握字元串的屬性和方法,是OC必不可少的基礎之一。 字元串分為可變字元串(NSMutableString)和不可變字元串(NSString),首先我們來學習不可變字元串的屬性與方法。 一、不可變字元串 1.創建不可變字元串 主要有四 ...
  • 觀察者模式的概念 觀察者A與被觀察者B建立訂閱關係,當被觀察者B發生某種改變時,立即通知觀察者A 添加依賴 基本模式 Observable被觀察者 註意各地方添加泛型避免大片警告,onNext()是事件的回調,onComplete()是事件的結尾。onComplete()與onError互斥需要保持 ...
  • 在Android 編程中經常會用到Uri轉化為文件路徑,如我們從相冊選擇圖片上傳至伺服器,一般上傳前需要對圖片進行壓縮,這時候就要用到圖片的絕對路徑。 下麵對我開發中uri轉path路徑遇到的問題進行總結,其中涉及到Android不同api下對於uri的處理,還有對於Google相冊圖片該如何獲取其 ...
  • Fragment生命周期 Fragment比Activity多的生命周期 Fragment引入佈局 重寫onCreateView方法引入佈局 Fragment事務 1.基本方法 使用事務之前,需要先獲取FragmentManager Fragment的回退棧 通過Activity維護一個回退棧來保存 ...
  • 譯者按: 上王者算什麼?有本事刷一下你的前端技術! 原文 : "Modern Frontend Developer in 2018" 譯者 : "Fundebug" 為了保證可讀性,本文采用意譯而非直譯。另外,本文版權歸原作者所有,翻譯僅用於學習。 過去5年, "我" 一直作為一枚 全棧工程師 ,經 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...