您好,登錄后才能下訂單哦!
本篇內(nèi)容介紹了“BootstrapValidator表單驗(yàn)證超詳要如何做”的有關(guān)知識,在實(shí)際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!
一、引入 js 和 css 文件
在我們開始項(xiàng)目的時候我們需要導(dǎo)入下面這兩個文件:bootstrapValidator.js
、bootstrapValidator.css
。我們需要在有jquery和bootstrap的頁面里引入。
二、編寫html
我們在項(xiàng)目中的 html文件中編寫 form
表單,添加表單控件,如果我們想對某一字段添加驗(yàn)證規(guī)則的話,則默認(rèn)需要以<div class="form-group"></div>
包裹。內(nèi)部的話則是<input class="form-control"/>
標(biāo)簽必須要有name
屬性,里面的值用來匹配字段。代碼如下所示:
<form class="form-horizontal">
<div class="form-group">
<label class="col-lg-3 control-label">Username</label>
<div class="col-lg-9">
<input type="text" class="form-control" name="username" />
</div>
</div>
<div class="form-group">
<label class="col-lg-3 control-label">Email address</label>
<div class="col-lg-9">
<input type="text" class="form-control" name="email" />
</div>
</div>
</form>
三、添加規(guī)則驗(yàn)證
1、在html標(biāo)簽中添加,代碼如下所示:
<div class="form-group">
<label class="col-lg-3 control-label">Username</label>
<div class="col-lg-5">
<input type="text" class="form-control" name="username"
data-bv-message="The username is not valid"
required
data-bv-notempty-message="The username is required and cannot be empty"
pattern="[a-zA-Z0-9]+"
data-bv-regexp-message="The username can only consist of alphabetical, number" />
</div>
</div>
2、添加 js 文件,代碼如下:
$(function () {
$("#form-test").bootstrapValidator({
live: 'disabled',//驗(yàn)證時機(jī),enabled是內(nèi)容有變化就驗(yàn)證(默認(rèn)),disabled和submitted是提交再驗(yàn)證
excluded: [':disabled', ':hidden', ':not(:visible)'],//排除無需驗(yàn)證的控件,比如被禁用的或者被隱藏的
submitButtons: '#btn-test',//指定提交按鈕,如果驗(yàn)證失敗則變成disabled,但我沒試成功,反而加了這句話非submit按鈕也會提交到action指定頁面
message: '通用的驗(yàn)證失敗消息',//好像從來沒出現(xiàn)過
feedbackIcons: {//根據(jù)驗(yàn)證結(jié)果顯示的各種圖標(biāo)
valid: 'glyphicon glyphicon-ok',
invalid: 'glyphicon glyphicon-remove',
validating: 'glyphicon glyphicon-refresh'
},
fields: {
text: {
validators: {
notEmpty: {//檢測非空,radio也可用
message: '文本框必須輸入'
},
stringLength: {//檢測長度
min: 6,
max: 30,
message: '長度必須在6-30之間'
},
regexp: {//正則驗(yàn)證
regexp: /^[a-zA-Z0-9_\.]+$/,
message: '所輸入的字符不符要求'
},
remote: {//將內(nèi)容發(fā)送至指定頁面驗(yàn)證,返回驗(yàn)證結(jié)果,比如查詢用戶名是否存在
url: '指定頁面',
message: 'The username is not available'
},
different: {//與指定文本框比較內(nèi)容相同
field: '指定文本框name',
message: '不能與指定文本框內(nèi)容相同'
},
emailAddress: {//驗(yàn)證email地址
message: '不是正確的email地址'
},
identical: {//與指定控件內(nèi)容比較是否相同,比如兩次密碼不一致
field: 'confirmPassword',//指定控件name
message: '輸入的內(nèi)容不一致'
},
date: {//驗(yàn)證指定的日期格式
format: 'YYYY/MM/DD',
message: '日期格式不正確'
},
choice: {//check控件選擇的數(shù)量
min: 2,
max: 4,
message: '必須選擇2-4個選項(xiàng)'
}
}
}
}
});
$("#btn-test").click(function () {//非submit按鈕點(diǎn)擊后進(jìn)行驗(yàn)證,如果是submit則無需此句直接驗(yàn)證
$("#form-test").bootstrapValidator('validate');//提交驗(yàn)證
if ($("#form-test").data('bootstrapValidator').isValid()) {//獲取驗(yàn)證結(jié)果,如果成功,執(zhí)行下面代碼
alert("yes");//驗(yàn)證成功后的操作,如ajax
}
});
});
四、前端自定義驗(yàn)證規(guī)則
1、回調(diào)自定義驗(yàn)證
通過Bootstrapvalidator
的前端自定義驗(yàn)證為callback
,代碼如下所示:
"rowkey": {
message: 'rowkey驗(yàn)證失敗',
validators: {
stringLength:{
max: 1000,
message: 'rowkey不能超過1000個字符'
},
callback:{
callback : function(value, validator, $field) {
if ($('input:radio[name="databaseType"]:checked').val() == "Hbase" &&
value == ""){
return {
valid: false,
message: 'rowkey不能為空'
}
}
else{
return true
}
}
}
}
}
2、拓展插件的validators方法
這個方法是將項(xiàng)目中常用的方法放到了一個單獨(dú)js
中從而實(shí)現(xiàn)我們需要的效果的,代碼如下所示:
$(function () {
$.fn.bootstrapValidator.validators.checkIdCard = {
/**
* @param {BootstrapValidator} 表單驗(yàn)證實(shí)例對象
* @param {jQuery} $field jQuery 對象
* @param {Object} 表單驗(yàn)證配置項(xiàng)值
* @returns {boolean}
*/
validate: function (validator, $field, options) {
// debugger;
try {
return checkIdCardNo($field.val());
}catch (e){
console.error(e);
}
return false;
}
};
}(window.jQuery));
3、remote 后端自定義驗(yàn)證
我們知道在Bootstrapvalidator
的前端自定義驗(yàn)證為remote
,這個我們在數(shù)據(jù)庫驗(yàn)重時經(jīng)常會用到 ,代碼如下所示:
"tableName": {
message: '表名稱驗(yàn)證失敗',
validators: {
notEmpty: {
message: '表名稱不能為空'
},
stringLength:{
max: 100,
message: '表名稱不能超過100個字符'
},
remote: {
message: '表名重復(fù)',
url: 'check',
data : '',//這里默認(rèn)會傳遞該驗(yàn)證字段的值到后端
delay: 2000 //這里特別要說明,必須要加此屬性,否則用戶輸入一個字就會訪問后臺一次,會消耗大量的系統(tǒng)資源,
}
}
},
后端部分代碼:
//檢測新增metaTableName是否重復(fù)
def check(){
def map = new HashMap()
def result = service.check(params.name)
if(result){
map.put("valid",true)
}else{
map.put("valid",false)
}
render(map as JSON) // 注意后端傳到前端的格式必須是帶有valid屬性的json對象才會被validator識別, // 如果返回任何其他的值,頁面驗(yàn)證將獲取不到驗(yàn)證結(jié)果導(dǎo)致無法驗(yàn)證
}
{"valid":false} //表示不合法,驗(yàn)證不通過
{"valid":true} //表示合法,驗(yàn)證通過
五、常用事件
1、獲取validator對象或?qū)嵗?/p>
我們這個方法一般是使用直接調(diào)用 $(form).bootstrapValidator(options)
來初始化validator
。在初始后之后有兩種方法來獲取我們的validator
對象或?qū)嵗椒ㄈ缦滤荆?/p>
方法一:
// Get plugin instance
var bootstrapValidator = $(form).data('bootstrapValidator');
// and then call method
bootstrapValidator.methodName(parameters)
方法二:
$(form).bootstrapValidator(methodName, parameters);
這種方式獲取的是代表當(dāng)前form
的jquery
對象,調(diào)用方式是將方法名和參數(shù)分別傳入到bootstrapValidator
方法中,可以鏈?zhǔn)秸{(diào)用。
兩種方法使用如下所示:
// The first way
$(form)
.data('bootstrapValidator')
.updateStatus('birthday', 'NOT_VALIDATED')
.validateField('birthday');
// The second one
$(form)
.bootstrapValidator('updateStatus', 'birthday', 'NOT_VALIDATED')
.bootstrapValidator('validateField', 'birthday');
2、重置某一單一驗(yàn)證字段驗(yàn)證規(guī)則
$(formName).data(“bootstrapValidator”).updateStatus("fieldName", "NOT_VALIDATED", null );
3、重置表單所有驗(yàn)證規(guī)則
$(formName).data("bootstrapValidator").resetForm();
4、手動觸發(fā)表單驗(yàn)證
//觸發(fā)全部驗(yàn)證
$(formName).data(“bootstrapValidator”).validate();
//觸發(fā)指定字段的驗(yàn)證
$(formName).data(“bootstrapValidator”).validateField('fieldName');
5、獲取當(dāng)前表單狀態(tài)
var flag = $(formName).data(“bootstrapValidator”).isValid();
6、根據(jù)指定字段名稱獲取驗(yàn)證對象
// element = jq對象 / null
var element = $(formName).data(“bootstrapValidator”).getFieldElements('fieldName');
“BootstrapValidator表單驗(yàn)證超詳要如何做”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。