欢迎来到山村网

angular实现三级联动的生日插件教程

2019-03-09 12:22:58浏览:845 来源:山村网   
核心摘要:写了一个生日联动插件具体的效果是这样的:具体的数据我取得数据是今年的数据,如果是想要做三级联动的日期插件,改一下时间就好

写了一个生日联动插件具体的效果是这样的:

具体的数据

我取得数据是今年的数据,如果是想要做三级联动的日期插件,改一下时间就好了

var app=angular.module("dataPicker",[])

app.factory('dataPicker', ['$http', '$q', function ($http, $q) {  return {   query: function () {    var lengthYear=100;    var dataPicker={     month:[],     year:[],     day:[]    };    var data = new Date();    var nowyear = data.getFullYear();    for(var i=nowyear,j=0; i>nowyear-lengthYear;i--,j++){     dataPicker.year[j]=i;    }    for(var i=0;i<=11;i++){     if(i<9){      dataPicker.month[i]='0'+(i+1);     }else{      dataPicker.month[i]=String(i+1);     }    }    return dataPicker;   }  } }])

directive插件的主要内容

app.directive('selectDatepicker', function ($http,dataPicker) {  return {   restrict: 'EAMC',   replace: false,   scope: {    birthday: '=birthday'   },   transclude: true,   template: '<span>生日</span>'+    '<select class="sel_year" ng-model="birY" ng-change="changeYear()"><option ng-repeat="x in yearAll">{{x}}</option></select>'+    '<select class="sel_month" ng-model="birM" ng-change="changeMonth()" ng-disabled="birY==''"><option ng-repeat="x in MonthAll">{{x}}</option> </select>'+    '<select class="sel_day" ng-model="birD" ng-disabled="birM==''" ng-change="changeDay()"><option ng-repeat="x in DayAll">{{x}}</option></select>',   link: function (scope, element){    var arr=[];    scope.birthday=scope.birthday=='0000-00-00'?"":scope.birthday    var shuju=dataPicker.query()    scope.yearAll=shuju.year;    scope.MonthAll=shuju.month;    if(scope.birthday){     scope.birY=scope.birthday.birthday.split('-')[0];     scope.birM=String(scope.birthday.birthday.split('-')[1])    }else{     scope.birY="";     scope.birM="";    }    scope.getDaysInoneMonth=function(year, month){     var month1 = Number(month);     month1=parseInt(month1,10)     var d= new Date(Number(year),month1,0);     return d.getDate();    }    scope.getDayArr=function(day){     shuju.day=[];     for(var i=0; i<day;i++){      if(i<9){       shuju.day[i]='0'+(i+1)      }else{       shuju.day[i]=String((i+1));      }     }    }    if(scope.birthday){     var day=scope.getDaysInoneMonth(scope.birthday.birthday.split('-')[0],scope.birthday.birthday.split('-')[1]);     scope.getDayArr(day)     scope.DayAll=shuju.day;     scope.birD=scope.birthday.birthday.split('-')[2]    }    scope.changeYear=function(){     scope.birD="";     scope.birM="";    }    scope.changeMonth=function(){     var day=scope.getDaysInoneMonth(scope.birY,scope.birM);     console.log(day)     scope.getDayArr(day);     scope.DayAll=shuju.day;     scope.birD="";    }    scope.changeDay=function(){     scope.returnDate();    }    scope.returnDate=function(){     if(!scope.birD||!scope.birY||!scope.birM){      scope.birthday.returnValue="";     }else{      arr[0]=scope.birY;      arr[1]=scope.birM;      arr[2]=scope.birD;      scope.birthday.returnValue=arr.join("-");     }    }   }  } })});

html

<div select-datepicker birthday="birthday">

js 传入的数据

 $scope.birthday={   birthday:1993-01-20,   returnValue:'',}
(责任编辑:豆豆)
下一篇:

C++如何实现二叉树叶子节点个数计算

上一篇:

ssh-远程登录centos7070端口

  • 信息二维码

    手机看新闻

  • 分享到
打赏
免责声明
• 
本文仅代表作者个人观点,本站未对其内容进行核实,请读者仅做参考,如若文中涉及有违公德、触犯法律的内容,一经发现,立即删除,作者需自行承担相应责任。涉及到版权或其他问题,请及时联系我们 xfptx@outlook.com