国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

實用又漂亮的BootstrapValidator表單驗證插件

2019-11-20 09:51:28
字體:
來源:轉載
供稿:網友

本文推薦一款twitter做的bootstrapValidator.js,本身bootstrap就是twitter做的,那么使用原配的validator也就更值得信賴。從百度上搜bootstrapValidator會出現很多款,但我只推薦這款:

一、一睹為快

為了簡便的介紹,這里只做為空的check。

BootstrapValidator官方下載地址

二、資源引用

下載完資源包后,你可以看到如下的目錄。

然后把以下三個文件引入到你項目。

<link type="text/css" rel="stylesheet" href="${ctx}/components/validate/css/bootstrapValidator.css" /><script type="text/javascript" src="${ctx}/components/validate/js/bootstrapValidator.js"></script><script type="text/javascript" src="${ctx}/components/validate/js/language/zh_CN.js"></script>

三、會員名稱不為空項目配置

<form class="form-signin required-validate" action="${ctx}/login" method="post" onsubmit="return validateCallback(this)"> <div class="form-group"> <div class="row"> <label>賬戶</label> <input class="form-control" type="text" autofocus name="username" placeholder="請輸入會員編號" autocomplete="off" data-bv-notempty /> </div> </div></form>

data-bv-notempty表示該會員編號要做為空check。
form-group的div是必須的,否則會報“too much recursion”錯誤。
form表單提交的時候會執行validateCallback方法,該方法在第五步中具體介紹。

四、頁面加載完成后啟用bootstrap validator

$(function() { // validate form $("form.required-validate").each(function() { var $form = $(this); $form.bootstrapValidator(); // 修復bootstrap validator重復向服務端提交bug $form.on('success.form.bv', function(e) { // Prevent form submission e.preventDefault(); }); });});

在form表單上加上‘class=”required-validate”'屬性,然后通過jquery獲取對應form表單,對其執行默認的bootstrapValidator加載。
一定要注意上面代碼中注釋部分代碼,具體介紹可參照下方修復BootstrapValidator重復提交的bug,具體內容如下

BootstrapValidator很漂亮,但漂亮的臉蛋下往往會隱藏殺機,這不,出現了重復提交的bug

解決辦法:

// validate form$("form.required-validate", $p).each(function() { var $form = $(this); $form.bootstrapValidator().on('success.form.bv', function(e) { // 阻止默認事件提交 e.preventDefault(); });});

為BootstrapValidator設置on方法,其key為success.form.bv,value為e.preventDefault();。

bug調查:

調查結果:

1.當不使用BootstrapValidator時,就不會出現如圖提示問題。
2.只有首次點擊提交,會重復提交兩次,而接下來重新輸入用戶名后,就單次提交了。

bug發生環境:

復制代碼 代碼如下:
<form class="required-validate" action="${ctx}/mem/login?callbackType=forward" method="post" onsubmit="return validateCallback(this, tabAjaxDone)" type="login">
...

<button type="submit" style="width: 100%;" class="btn btn-default">提交</button>

</form>

描述:
這是一個普通的form表單,action中為請求地址,form中有onsubmit方法,主要是為了驗證表單,然后發送請求,最后回調tabAjaxDone方法。

bug分析:

1.form表單肯定沒有問題,如果沒有bootstrap validate,那是一點問題都沒有。
2.之前使用jquery validate的時候也沒有問題。
3.那么問題只能發生在bootstrap validate上了。
4.而bootstrap validate的默認使用上也是沒有問題的,因為只有首次點擊提交時才會重復提交。
5.那么這可能是bootstrap validate有默認的提交請求。

再查看validate對象,可以看到它默認有很多事件,其中formsuccess的嫌疑最大,也就是說有可能是其再次觸發了提交請求。

bug調試:

// validate form$("form.required-validate", $p).each(function() { var $form = $(this); $form.bootstrapValidator();// .on('success.form.bv', function(e) {// // 阻止默認事件提交// e.preventDefault();// });});

1.在頁面初次加載的時候,BootstrapValidator需要按照上述方式進行加載,方可進行前端數據校驗。
2.你已經看到注釋的代碼,也許你已經猜得到,這就是解決辦法。沒錯,為form加上該事件處理,使用e.preventDefault();阻止默認事件提交。

五、form表單提交時驗證項目

function validateCallback(form, callback, confirmMsg) { YUNM.debug("進入到form表單驗證和提交"); var $form = $(form); var data = $form.data('bootstrapValidator'); if (data) { // 修復記憶的組件不驗證 data.validate(); if (!data.isValid()) { return false; } } $.ajax({ type : form.method || 'POST', url : $form.attr("action"), data : $form.serializeArray(), dataType : "json", cache : false, success : callback || YUNM.ajaxDone, error : YUNM.ajaxError }); return false;}

validateCallback中獲取form表單后,通過isValid方法可以返回表單驗證是否通過。
當表單驗證通過后,再通過ajax將表單提交到服務端。

如果大家還想深入學習,可以點擊這里進行學習,再為大家附3個精彩的專題:

Bootstrap學習教程

Bootstrap實戰教程

Bootstrap插件使用教程

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 榆树市| 天等县| 怀集县| 安塞县| 莒南县| 郑州市| 武城县| 元江| 锦屏县| 闽侯县| 宣威市| 吴堡县| 汉中市| 揭东县| 陆川县| 郑州市| 台东县| 德庆县| 门源| 梁山县| 沧州市| 叙永县| 新平| 凤翔县| 尼勒克县| 三台县| 湾仔区| 弥勒县| 静海县| 句容市| 临湘市| 安康市| 修武县| 乐平市| 大安市| 庆城县| 建湖县| 万山特区| 桦南县| 临澧县| 靖西县|