最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

bootstrap校驗laydate起止日期聯(lián)動失效問題及解決方法

 更新時間:2023年01月06日 14:40:54   作者:weixin_43939111  
這篇文章主要介紹了bootstrap校驗laydate起止日期聯(lián)動失效問題,項目中用到bootstrapValidator,以及l(fā)aydate(by:賢心,插件效果美觀),本文通過實例代碼給大家介紹的非常詳細,需要的朋友可以參考下

項目場景:

提示:這里簡述項目相關(guān)背景:

項目中用到bootstrapValidator,以及l(fā)aydate(by:賢心,插件效果美觀)。
項目表單中,有兩處需要聯(lián)動校驗:開始日期,結(jié)束日期。
規(guī)則:兩項必填,開始日期不能晚于結(jié)束日期

問題描述

提示:這里描述項目中遇到的問題:

因為使用的外部插件,在調(diào)試過程中出現(xiàn)以下問題:

1.單獨綁定input變化監(jiān)聽觸發(fā)校驗失效

<input type="text" class="form-control" id="startTime" name="startTime" autocomplete="off">
//綁定使用laydate元素
  laydate.render({
    elem:'#startTime',
    type:'date',
    trigger:'click',
    done:function(){
    }
  })
  laydate.render({
    elem:'#endTime',
    type:'date',
    trigger:'click',
    done:function(){
    }
  })
  $("#startTime").bind("change",function(){//嘗試手動觸發(fā)聯(lián)動校驗
     $("#dataForm").data("bootstrapValidator").validateField("startTime");//校驗結(jié)果無任何反饋
     $("#dataForm").data("bootstrapValidator").validateField("endTime");//校驗結(jié)果無任何反饋
  })

2.在laydate回調(diào)函數(shù)中手動設(shè)置校驗有效,但校驗不通過后修改值和提交按鈕校驗都沒反應(yīng)

  laydate.render({
    elem:'#startTime',
    type:'date',
    trigger:'click',
    done:function(){//手動觸發(fā)聯(lián)動校驗
    	$("#dataForm").data("bootstrapValidator").validateField("startTime");
    	$("#dataForm").data("bootstrapValidator").validateField("endTime");
    }
  })
  $("#subForm").click(()=>{      
    $("#dataForm").data('bootstrapValidator').validate();//不起作用
  })

解決方案:

在回調(diào)函數(shù)中增加重置校驗

完整代碼(“關(guān)鍵代碼”已在注釋中標(biāo)出)
1、自定義bootstrapValidator.extend.js文件

$(document).ready(function(){

  $.fn.bootstrapValidator.i18n.orderRange = $.extend($.fn.bootstrapValidator.i18n.orderRange || {}, {
    'default':''
  });
  $.fn.bootstrapValidator.validators.checkStartDate = {//起始日期不晚于結(jié)束日期
    validate:function(validator,$field,options){
      var value = $field.val();
      if($("#endTime").val().trim() < value){
        return false
      }else{
        return true
      }
    }
  };
  $.fn.bootstrapValidator.validators.checkEndDate = {//結(jié)束日期不早于起始日期
    validate:function(validator,$field,options){
      var value = $field.val();
        if($("#startTime").val().trim() > value){
          return false
        }else{
          return true
        }
    }
  }
})

2、html

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" />
<!--以下為主要引入文件-->
  <link rel="stylesheet" href="./css/bootstrap.min.css">
  <link rel="stylesheet" href="./css/bootstrapValidator.min.css">
  <script src="./js/jquery.min.js"></script>
  <script src="./js/laydate/laydate.js"></script>
  <script src="./js/bootstrap.min.js"></script>
  <script src="./js/bootstrapValidator.min.js"></script>
  <script src="./js/bootstrapValidator.extend.js"></script>
</head>
<body>
	<form class="form" id="dataForm">
		<!--對比組,檢查整體校驗是否生效-->
		<div class="form-group">
			<label>名稱:</label>
			<input type="text" class="form-control" name="devName" id="devName"/>
		</div>
		<!--聯(lián)動組-->
		<div class="form-group">
			<label>開始日期:</label>
			<input type="date" class="form-control" name="startTime" id="startTime"/>
		</div>
		<div class="form-group">
			<label>結(jié)束日期:</label>
			<input type="date" class="form-control" name="endTime" id="endTime"/>
		</div>
	</form>
	<button id="subForm">提交</button>
</body>
<script>
function initDataForm(){//初始化校驗規(guī)則
  $("#dataForm").bootstrapValidator({
    fields:{
      devName:{
        validators:{
          notEmpty:{
            message:"必填項不能為空"
          }
        }
      },
      startTime:{
        validators:{
          notEmpty:{
            message:"必填項不能為空"
          },
          checkStartDate:{
            message:"開始日期不能晚于結(jié)束日期"
          }
        }
      },
      endTime:{
        validators:{
          notEmpty:{
            message:"必填項不能為空"
          },
          checkStartDate:{
            message:"結(jié)束日期不能早于開始日期"
          }
        }
      }
    }
  })
}
initDataForm();
laydate.render({
   elem:'#startTime',
   type:'date',
   trigger:'click',
   done:function(){
	  $('#dataForm').data("bootstrapValidator").resetField("startTime");//關(guān)鍵代碼
      $('#dataForm').data("bootstrapValidator").resetField("endTime");//關(guān)鍵代碼
      $("#dataForm").data("bootstrapValidator").validateField("startTime");
      $("#dataForm").data("bootstrapValidator").validateField("endTime");
    }
  })
  laydate.render({
    elem:'#endTime',
    type:'date',
    trigger:'click',
    done:function(){
	  $('#dataForm').data("bootstrapValidator").resetField("startTime");//關(guān)鍵代碼
      $('#dataForm').data("bootstrapValidator").resetField("endTime");//關(guān)鍵代碼
      $("#dataForm").data("bootstrapValidator").validateField("startTime");
      $("#dataForm").data("bootstrapValidator").validateField("endTime");
    }
  })
  $("#subForm").click(()=>{      
    $("#dataForm").data('bootstrapValidator').validate();
  })
</script>

分析:

本例使用到的各版本(css版本省略):

jquery.min.jsbootstrap.min.jsbootstrapValidator.min.jslaydate.js
v2.1.4v3.3.7v0.5.3v5.0.9

在發(fā)現(xiàn)校驗無法生效后查找了多方面的資料,也用原生的<input type="datatime"/>試驗過,個人感覺,單獨使用代碼主動觸發(fā)校驗?zāi)稠椇?,這一項在值改變后不會重復(fù)校驗。
操作順序:
①點“提交”按鈕
②開始日期報“必填項不能為空”
③開始日期和結(jié)束日期填入合法值或非法值
結(jié)果:無論第③步是否輸入合理,輸入框下的錯誤提示依舊是“必填項不能為空”
需要重置之前的校驗狀態(tài)。

在這里插入圖片描述

通過在觸發(fā)校驗代碼處添加前置語句,完美解決了這個問題:

	  $('#dataForm').data("bootstrapValidator").resetField("startTime");//關(guān)鍵代碼
      $('#dataForm').data("bootstrapValidator").resetField("endTime");//關(guān)鍵代碼
      $("#dataForm").data("bootstrapValidator").validateField("startTime");
      $("#dataForm").data("bootstrapValidator").validateField("endTime");

在這里插入圖片描述

可能引入版本不同的原因,我只有resetFieldvalidateField方式才有效
網(wǎng)上還有其他寫法,或許在其他版本下會生效,請參考:
重置狀態(tài)寫法:

$("#dateForm").bootstrapValidator("updateStatus",$("#startTime"),"VALID");
//(此寫法我本地不起作用)或
$("#dateForm").data("bootstrapValidator").updateStatus("startTime","VALID");//此寫法我本地報錯updateStatus is not a function

手動觸發(fā)校驗寫法:

$("#dataForm").validator($("#startTime"));//此寫法我本地報錯validator is not a function

補充:

還有一種方式,通過修改css來實現(xiàn)模擬聯(lián)動,但是在此例中不適用。

  • 對于laydate插件:不會主動觸發(fā)校驗,只能在done中寫主動校驗代碼,然后在輸入框內(nèi)容變化時才能校驗。如果不加重置校驗狀態(tài)語句,出現(xiàn)第一次校驗不通過后將無法進行二次校驗。
  • 對于瀏覽器自帶的<input type="date">,輸入框值變化,可觸發(fā)校驗,但是不靈敏(比如,開始選:2023年1月15日,結(jié)束選2023年1月10日,此時開始報“不能晚于結(jié)束日期”,再將結(jié)束選到2023年1月18日,但開始框的紅色警告依然存在,只有開始日期重選一遍,底下紅色警告才消失),所以,也同樣需要加重置校驗狀態(tài)語句+代碼觸發(fā)關(guān)聯(lián)框校驗,才能實現(xiàn)聯(lián)動的效果

到此這篇關(guān)于bootstrap校驗laydate起止日期聯(lián)動失效的文章就介紹到這了,更多相關(guān)bootstrap校驗laydate日期內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • JavaScript修改css樣式style

    JavaScript修改css樣式style

    用JavaScript修改網(wǎng)頁樣式
    2008-04-04
  • JavaScript日期和時間的格式化及其它常用處理方法

    JavaScript日期和時間的格式化及其它常用處理方法

    這篇文章主要給大家介紹了關(guān)于JavaScript日期和時間的格式化及其它常用處理方法,JavaScript中可以使用Date對象來表示日期和時間,如果需要格式化日期和時間,可以使用Date對象的幾個方法和一些字符串操作方法來實現(xiàn),需要的朋友可以參考下
    2023-09-09
  • js實現(xiàn)的星星評分功能函數(shù)

    js實現(xiàn)的星星評分功能函數(shù)

    這篇文章主要介紹了js實現(xiàn)的星星評分功能函數(shù),涉及JavaScript響應(yīng)鼠標(biāo)事件實現(xiàn)針對頁面元素的遍歷與樣式屬性的修改技巧,非常簡單實用的代碼,需要的朋友可以參考下
    2015-12-12
  • antd組件Upload實現(xiàn)自己上傳的實現(xiàn)示例

    antd組件Upload實現(xiàn)自己上傳的實現(xiàn)示例

    這篇文章主要介紹了antd組件Upload實現(xiàn)自己上傳的實現(xiàn)示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-12-12
  • ECharts入門教程

    ECharts入門教程

    ECharts 是一個使用JavaScript實現(xiàn)的開源可視化庫,涵蓋各行業(yè)圖表,滿足各種需求。這篇文章介紹了ECharts的基礎(chǔ)知識,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • window.parent調(diào)用父框架時 ie跟火狐不兼容問題

    window.parent調(diào)用父框架時 ie跟火狐不兼容問題

    window.parent調(diào)用父框架時,ie跟火狐不兼容問題!
    2009-07-07
  • 將CKfinder整合進CKEditor3.0的新方法

    將CKfinder整合進CKEditor3.0的新方法

    最新發(fā)布的CKFinder 1.4版 已經(jīng)提供了對CKEditor3.0的支持
    2010-01-01
  • 淺析javascript中的DOM

    淺析javascript中的DOM

    本文主要給大家簡單介紹了是什么是DOM、動態(tài)操作DOM元素的方法、使用jsjs操作樣式以及Form對象的簡介,是個人對于javascript中的DOM的理解的總結(jié),推薦給小伙伴們。
    2015-03-03
  • IOS中safari下的select下拉菜單文字過長不換行的解決方法

    IOS中safari下的select下拉菜單文字過長不換行的解決方法

    今天在項目開發(fā)中遇到一個問題safari下的select下拉菜單文字過長不換行問題,最終我用<optgroup>標(biāo)簽解決此問題,下面小編把實現(xiàn)思路分享給大家供大家參考
    2016-09-09
  • 微信小程序wx.getImageInfo()如何獲取圖片信息

    微信小程序wx.getImageInfo()如何獲取圖片信息

    這篇文章主要為大家詳細介紹了微信小程序wx.getImageInfo()如何獲取圖片信息,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-01-01

最新評論

洞口县| 九江县| 青冈县| 广汉市| 泽库县| 民和| 临汾市| 琼中| 神木县| 金华市| 清河县| 库伦旗| 临猗县| 育儿| 惠安县| 二连浩特市| 峨眉山市| 凌海市| 安义县| 通山县| 西藏| 石狮市| 枣阳市| 扎赉特旗| 黎川县| 青田县| 玉环县| 仙居县| 新竹县| 长寿区| 白城市| 莒南县| 平度市| 延吉市| 平塘县| 平舆县| 稷山县| 竹山县| 黔江区| 磐石市| 东海县|