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
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...