bootstrap-validator使用詳解(程式碼實例)
這次帶給大家bootstrap-validator使用詳解,使用bootstrap-validator的注意事項有哪些,以下就是實戰案例,一起來看一下。
【相關影片推薦:Bootstrap教學】
需要的js、css和img在下面都有說明,耐心點讀!
所需的js檔: jquery.min.js,bootstrapValidator.min.js,bootstrap-validator-default.js(自訂的一個預設設定檔,是個人寫的,非官方文件)
前兩個檔案cdn上都有,bootstrap-validator-default.js內容如下:
/*默认规则 start*///ip格式$.fn.bootstrapValidator.validators.ip = { //message: "ip格式不正确" validate: function(validator, $field, options) { var value = $field.val(), ipReg = /^(?:25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)\.(?:25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)\.(?:25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)\.(?:25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)$/; if (value === '') { return true; } return ipReg.test(value); } };//password格式$.fn.bootstrapValidator.validators.pw = { //message: "必须包含数字、英文字母、特殊字符" validate: function(validator, $field, options) { var value = $field.val(), ipReg = /.*(?=.*\d)(?=.*[a-zA-Z])(?=.*[~!@#$%^&*_])./; if (typeof value != 'string' || !ipReg.test(value)) { return false; } return true; } };//不允许有空格$.fn.bootstrapValidator.validators.noSpace = { //message: "必须包含数字、英文字母、特殊字符" validate: function(validator, $field, options) { var value = $field.val(); if (typeof value != 'string' || value.indexOf(' ') > -1) { return false; } return true; } };//网关格式$.fn.bootstrapValidator.validators.mask = { //message: "网关不可达" validate: function(validator, $field, options) { var ipArr = $field.parent().parent().find('input[name="ip"]').val().split('.'), gatewayArr = $field.parent().parent().find('input[name="gateway"]').val().split('.'), value = $field.val(), netmaskArr = value.split('.'), len = 4, i = 0; if (ipArr.length !== len || gatewayArr.length !== len || netmaskArr.length !== len) { return false; } for (; i < len; i++) { if ((ipArr[i] & netmaskArr[i]) !== (gatewayArr[i] & netmaskArr[i])) { return false; } } return true; } };//邮箱 表单验证规则$.fn.bootstrapValidator.validators.mail = { //message: "邮箱格式不正确" validate: function(validator, $field, options) { var mail = /^[a-z0-9._%-]+@([a-z0-9-]+\.)+[a-z]{2,4}$/, value = $field.val(); return mail.test(value); } };//电话验证规则$.fn.bootstrapValidator.validators.phone = { //message: "0371-68787027" validate: function(validator, $field, options) { var phone = /^0\d{2,3}-\d{7,8}$/, value = $field.val(); return phone.test(value); } };//区号验证规则$.fn.bootstrapValidator.validators.ac = { //message: "区号如:010或0371" validate: function(validator, $field, options) { var ac = /^0\d{2,3}$/, value = $field.val(); return ac.test(value); } };//无区号电话验证规则$.fn.bootstrapValidator.validators.noactel = { //message: "电话格式如:68787027" validate: function(validator, $field, options) { var noactel = /^\d{7,8}$/, value = $field.val(); return noactel.test(value); } };/*默认规则 end*/$.fn.extend({ initBV: function(config) { //初始化函数 if (this.length == 0 || this[0].tagName !== 'FORM') { return false; } var $form = this.eq(0), $inputs = $form.find('input'), $errors = $form.find('.errors'), $itemBtn = $form.find('.item-btn'); //让ul.errors中显示验证项 function initTips(fields) { var validator, notEmpty, $errField; fields = fields.fields || fields; if (!fields) return false; for (var field in fields) { $errField = $form.find('#errors-' + field); $errField.hide().find('li').remove(); validators = fields[field].validators; notEmpty = false; for (var vali in validators) { $('<li/>') .addClass('text-left') .attr('data-field', field) .attr('data-vali', vali) .html(validators[vali].message) .appendTo($errField); if (vali == 'notEmpty') { notEmpty = true; } } if (notEmpty) { $errField.data('status', 'error'); } else { $errField.data('status', 'success'); } } return false; } initTips(config.fields); $form.bootstrapValidator(config) .on('success.form.bv', function(e, data) { //点击提交之后 // Prevent form submission e.preventDefault(); return false; }).on('success.field.bv', function(e, data) { var removeClass, successClass; if (data.element[0].value) { //验证成功 console.log('real success') removeClass = 'error'; addClass = 'success'; } else { //验证的其实是''(空字符串),但也被算是success事件 console.log('not success'); removeClass = 'error success'; addClass = 'normal'; } $errors.hide(); $form.find('#errors-' + data.field).show().data('status', 'success').find('li').each(function(idx, item) { $(item).removeClass(removeClass).addClass(addClass); }); }).on('error.field.bv', function(e, data) { // data.bv --> The BootstrapValidator instance // data.field --> The field name // data.element --> The field element // Get the messages of field var field = data.field; var messages = data.bv.getMessages(data.element); // Remove the field messages if they're already available $errors.hide(); $form.find('#errors-' + data.field).show().data('status', 'error').find('li').each(function(idx, item) { item = $(item); if (messages.indexOf(item.text().replace('&', '&')) > -1 || config.fields[data.field].validators.notEmpty && messages.indexOf(config.fields[data.field].validators.notEmpty.message) > -1) { item.removeClass('success').addClass('error'); } else { item.removeClass('error').addClass('success'); } }); // Hide the default message // $field.data('bv.messages') returns the default element containing the messages data.element .data('bv.messages') .find('.help-block[data-bv-for="' + data.field + '"]') .hide(); }); $inputs.blur(function(e) { $errors.hide(); }) $inputs.focus(function(e) { $errors.hide(); $(this).trigger('input'); $(this).parent().find('.totalTip').hide(); $form.find('#errors-' + this.name).show(); }) $itemBtn.click(function(e) { e.preventDefault(); $form.find('input').trigger('input'); $('.errors').hide(); return false; }); }, valiFields: function(fields) { //验证fields是否验证通过,未通过则提示信息 var status = true, fieldStatus, $errField, $errFiePar, $totalTip; fields = fields.fields || fields; if (!fields) return false; for (var field in fields) { $errField = $('#errors-' + field); fieldStatus = $errField.data('status'); if (fieldStatus == 'error') { $errFiePar = $errField.parent(), $totalTip = $errFiePar.find('.totalTip'); if ($totalTip.length) { $totalTip.show(); } else { $errFiePar.append('<span class="totalTip text-left">' + fields[field].message + '</span>'); } } status = status && fieldStatus == 'success'; } return status; } });
需要的css檔: bootstrap-validator-my.css(自訂的一個預設設定檔,是個人寫的,非官方文件)
bootstrap-validator-my.css內容如下:
* { margin: 0; padding: 0; box-sizing: border-box; }input,button { outline: none; }ul { list-style: none; }/*字体样式*/.text-right { text-align: right; }.text-left { text-align: left; }.text-center,.center { text-align: center; }.bold { font-weight: bold; }/*位置样式*/.relative { position: relative; }.absolute { position: absolute; }.fixed { position: fixed; }/*浮动相关*/.float,.float-left { float: left; }.float-right { float: right; }.clear:after { content: "."; display: block; height: 0; visibility: hidden; clear: both; }.pageWrap { height: auto; min-height: 100%; }/*panel start*/.panel { border: 1px solid #6AC7DC; border-radius: 4px; background: #fff; }.panel>div:first-child { border-bottom: 1px solid #6AC7DC; height: 35px; line-height: 35px; border-radius: 4px; }.panel .panel-head { padding: 0 20px; position: relative; }.panel .panel-head .panel-title { font-weight: bold; }.panel .panel-head .panel-btns { position: absolute; right: 20px; }.panel .panel-head .panel-btns span { border-radius: 5px; color: #fff; padding: 2px 8px; }.panel .panel-head .panel-btns span:hover { cursor: pointer; }.panel .panel-head .panel-btns .panel-btn-add { background: #3686D1; }.panel .panel-body { padding: 20px; }.panel .panel-body .panel-table { width: 100%; border-collapse: collapse; text-align: center; }.panel .panel-body .panel-table td,.panel .panel-body .panel-table th { border: 1px solid #E0E0E0; font-size: 14px; padding: 0 8px; font-style: normal; }.panel .panel-body .panel-table th { height: 33px; line-height: 33px; }.panel .panel-body .panel-table td { height: 28px; line-height: 28px; }/*panel end*//*所有表单元素样式 start*/.form { display: flex; justify-content: center; padding: 20px; }.form .item-txt,.form .item-sel { width: 300px; height: 30px; line-height: 30px; border: 1px solid #CCCCCC; padding: 0 10px; }.form .item-dis { background: #E3E3E3; color: #999999; }.form .item-dis:hover { cursor: not-allowed; }.form .item { font-size: 0; position: relative; margin-bottom: 15px; }.form .totalTip { position: absolute; left: 386px; top: 0; width: 235px; height: 30px; line-height: 30px; color: red; }.form .errors { width: 235px; position: absolute; left: 386px; top: 0; border: 1px solid #ddd; box-shadow: 1px 1px 1px #efefef; background: #f9f9f9; padding: 5px 10px; z-index: 100; }.form .errors li { line-height: 20px; padding-left: 18px; font-size: 12px; color: #666; font-family: Tahoma,Helvetica,"Microsoft Yahei","微软雅黑",Arial,STHeiti; background: url(reg_icons.png) no-repeat -86px -112px; }.form .errors .arrow { position: absolute; top: 8px; left: -6px; height: 0px; width: 0px; border-top: 6px solid transparent; border-right: 6px solid #ddd; border-bottom: 6px solid transparent; }.form .errors .arrow:after { content: ''; position: absolute; top: -5px; left: 1px; border-top: 5px solid transparent; border-right: 5px solid #f9f9f9; border-bottom: 5px solid transparent; }.form .errors li.normal { background-position: -86px -112px; }.form .errors li.success { background-position: -86px -128px; }.form .errors li.error { background-position: -86px -144px; color: red; }.form .item * { font-size: 14px; }.form .item .item-label { display: inline-block; }.form .item .item-btn { height: 30px; width: 300px; line-height: 30px; display: inline-block; background: #3686D1; color: #fff; font-weight: bold; text-align: center; }.form .item .item-btn:hover { cursor: pointer; }.form .error-cont { color: gray; display: inline-block; text-align: left; font-size: 12px; height: 15px; position: relative; white-space: nowrap; }.form .error-cont .icon { position: absolute; top: 1px; }.form .error-cont .tip { position: absolute; left: 20px; font-size: 12px; }.form .redtip { color: red; font-weight: bold; display: inline-block; height: 30px; line-height: 30px; }/*所有表单元素样式 end*/
需要的img為:
<!DOCTYPE html><html><head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width"> <title>bootstrap-validator-my</title> <link rel="stylesheet" href="bootstrap-validator-my.css"> </head><body> <div class="panel"> <div class="panel-head"> </div> <div class="panel-body"> <form id="defaultForm" role="form" class="form-signin form" action="registerAccount.do" method="post"> <div class="text-right"> <div class="form-group item"> <label class="item-label" for="username">用户名:</label> <input class="form-control item-txt" type="text" name="username" id="username" /> <ul id="errors-username" data-status="" class="errors" style="display: none;"> <span class="arrow"></span> </ul> </div> <div class="form-group item"> <label class="item-label" for="ip">ip:</label> <input class="form-control item-txt" type="text" name="ip" id="ip" /> <ul id="errors-ip" data-status="" class="errors" style="display: none;"> <span class="arrow"></span> </ul> </div> <div class="form-group item"> <label class="item-label" for="password">密码:</label> <input class="form-control item-txt" type="password" name="password" id="password" /> <ul id="errors-password" data-status="" class="errors" style="display: none;"> <span class="arrow"></span> </ul> </div> <div class="form-group item"> <label class="item-label" for="newpassword">新密码:</label> <input class="form-control item-txt" type="password" name="newpassword" id="newpassword" /> <ul id="errors-newpassword" data-status="" class="errors" style="display: none;"> <span class="arrow"></span> </ul> </div> <div class="form-group item"> <label class="item-label" for="repassword">确认密码:</label> <input class="form-control item-txt" type="password" name="repassword" id="repassword" /> <ul id="errors-repassword" data-status="" class="errors" style="display: none;"> <span class="arrow"></span> </ul> </div> <div class="form-group item"> <span class="item-btn" type="submit">确认注册</span> </div> </div> </form> </div> </div> <script src="https://cdn.bootcss.com/jquery/3.3.1/jquery.min.js"></script> <script src="https://cdn.bootcss.com/bootstrap-validator/0.5.3/js/bootstrapValidator.min.js"></script> <script src="bootstrap-validator-default.js"></script> <script> var config = { fields: { /*验证:规则*/ username: { //验证input项:验证规则 message: 'The username is not valid', validators: { stringLength: { min: 6, max: 30, message: '用户名长度必须在6到30之间' }, regexp: { regexp: /^[a-zA-Z0-9_\.]+$/, message: '用户名由数字字母下划线和.组成' }, notEmpty: { message: '用户名不能为空' } } }, ip: { message: 'ip无效', validators: { ip: { message: 'ip格式不正确' } } }, password: { message: '密码无效', validators: { pw: { // regexp: /.*(?=.*\d)(?=.*[a-zA-Z])(?=.*[~!@#$%^&*_])./, message: '必须包含数字、英文字母、特殊字符' }, stringLength: { min: 8, message: '密码长度须大于等于8位' } } }, newpassword: { message: '密码无效', validators: { regexp: { regexp: /.*(?=.*\d)(?=.*[a-zA-Z])(?=.*[~!@#$%^&*_])./, message: '密码没通过' }, stringLength: { min: 8, message: '密码长度须大于等于8位' }, different: { //不能和用户名相同 field: 'password', //需要进行比较的input name值 message: '新密码不能和旧密码相同' }, identical: { //相同 field: 'repassword', //需要进行比较的input name值 message: '新密码和确认密码要一致' } } }, repassword: { message: '密码无效', validators: { regexp: { regexp: /.*(?=.*\d)(?=.*[a-zA-Z])(?=.*[~!@#$%^&*_])./, message: '密码没通过' }, stringLength: { min: 8, message: '密码长度须大于等于8位' }, different: { //不能和用户名相同 field: 'password', //需要进行比较的input name值 message: '确认密码不能和旧密码相同' }, identical: { //相同 field: 'newpassword', //需要进行比较的input name值 message: '新密码和确认密码要一致' } } } } }; var $form = $('#defaultForm'); $form.initBV(config); $form.find('.item-btn').click(function(e) { if($form.valiFields(config.fields)) { console.log(1) }else { console.log(0) } }); </script></body></html>
相信看了本文案例你已經掌握了方法,更多精彩請關注php中文網其它相關文章!
相關閱讀:
以上是bootstrap-validator使用詳解(程式碼實例)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

CrystalDiskMark是一款適用於硬碟的小型HDD基準測試工具,可快速測量順序和隨機讀取/寫入速度。接下來就讓小編為大家介紹一下CrystalDiskMark,以及crystaldiskmark如何使用吧~一、CrystalDiskMark介紹CrystalDiskMark是一款廣泛使用的磁碟效能測試工具,用於評估機械硬碟和固態硬碟(SSD)的讀取和寫入速度和隨機I/O性能。它是一款免費的Windows應用程序,並提供用戶友好的介面和各種測試模式來評估硬碟效能的不同方面,並被廣泛用於硬體評

foobar2000是一款能隨時收聽音樂資源的軟體,各種音樂無損音質帶給你,增強版本的音樂播放器,讓你得到更全更舒適的音樂體驗,它的設計理念是將電腦端的高級音頻播放器移植到手機上,提供更便捷高效的音樂播放體驗,介面設計簡潔明了易於使用它採用了極簡的設計風格,沒有過多的裝飾和繁瑣的操作能夠快速上手,同時還支持多種皮膚和主題,根據自己的喜好進行個性化設置,打造專屬的音樂播放器支援多種音訊格式的播放,它還支援音訊增益功能根據自己的聽力情況調整音量大小,避免過大的音量對聽力造成損害。接下來就讓小編為大

MetaMask(中文也叫小狐狸錢包)是一款免費的、廣受好評的加密錢包軟體。目前,BTCC已支援綁定MetaMask錢包,綁定後可使用MetaMask錢包進行快速登錄,儲值、買幣等,且首次綁定還可獲得20USDT體驗金。在BTCCMetaMask錢包教學中,我們將詳細介紹如何註冊和使用MetaMask,以及如何在BTCC綁定並使用小狐狸錢包。 MetaMask錢包是什麼? MetaMask小狐狸錢包擁有超過3,000萬用戶,是當今最受歡迎的加密貨幣錢包之一。它可免費使用,可作為擴充功能安裝在網絡

網易郵箱,作為中國網友廣泛使用的一種電子郵箱,一直以來以其穩定、高效的服務贏得了用戶的信賴。而網易信箱大師,則是專為手機使用者打造的信箱軟體,它大大簡化了郵件的收發流程,讓我們的郵件處理變得更加便利。那麼網易信箱大師該如何使用,具體又有哪些功能呢,下文中本站小編將為大家帶來詳細的內容介紹,希望能幫助到大家!首先,您可以在手機應用程式商店搜尋並下載網易信箱大師應用程式。在應用寶或百度手機助手中搜尋“網易郵箱大師”,然後按照提示進行安裝即可。下載安裝完成後,我們打開網易郵箱帳號並進行登錄,登入介面如下圖所示

在如今雲端儲存已成為我們日常生活和工作中不可或缺的一部分。百度網盤作為國內領先的雲端儲存服務之一,憑藉其強大的儲存功能、高效的傳輸速度以及便捷的操作體驗,贏得了廣大用戶的青睞。而且無論你是想要備份重要文件、分享資料,還是在線上觀看影片、聽取音樂,百度網盤都能滿足你的需求。但很多用戶可能對百度網盤app的具體使用方法還不了解,那麼這篇教學就將為大家詳細介紹百度網盤app如何使用,還有疑惑的用戶們就快來跟著本文詳細了解一下吧!百度雲網盤怎麼用:一、安裝首先,下載並安裝百度雲軟體時,請選擇自訂安裝選

Windows作業系統是全球最受歡迎的作業系統之一,其新版本Win11備受矚目。在Win11系統中,管理員權限的取得是一個重要的操作,管理員權限可以讓使用者對系統進行更多的操作和設定。本文將詳細介紹在Win11系統中如何取得管理員權限,以及如何有效地管理權限。在Win11系統中,管理員權限分為本機管理員和網域管理員兩種。本機管理員是指具有對本機電腦的完全管理權限

隨著網路科技的快速發展,我們的生活也得到了極大的便利,其中之一就是能夠透過網路下載和分享各種資源。而在下載資源的過程中,磁力連結成為了一種非常常見且方便的下載方式。那麼,迅雷磁力連結又是如何使用的呢?下面,我將給大家詳細介紹一下。迅雷是一款非常受歡迎的下載工具,它支援多種下載方式,其中包括磁力連結。磁力連結可以理解為一種下載位址,透過它我們可以取得資源的相關

Apple在周二推出了iOS17.4更新,為iPhone帶來了一系列新功能和修復。這次更新包含了全新的表情符號,同時歐盟用戶也能夠下載其他應用程式商店。此外,更新還加強了對iPhone安全性的控制,引入了更多的「失竊設備保護」設定選項,為用戶提供更多選擇和保障。 "iOS17.3首次引入了「失竊設備保護」功能,為用戶的敏感資料增加了額外的安全保障。當用戶不在家等熟悉地點時,該功能要求用戶首次輸入生物特徵信息,並在一小時後再次輸入資訊才能存取和更改某些數據,如修改AppleID密碼或關閉失竊設備保護功能
