基于javascript bootstrap實(shí)現(xiàn)生日日期聯(lián)動(dòng)選擇
本文實(shí)例為大家分享了js實(shí)現(xiàn)日期聯(lián)動(dòng)選擇的相關(guān)代碼,適用于生日的選擇,供大家參考,具體內(nèi)容如下
實(shí)現(xiàn)目標(biāo):年月日三個(gè)select 輸入框,以及一個(gè)hidden的input,通過(guò)js獲取input的值,如果有值切是日期格式,年月日select為input中的時(shí)間。否則為空。年默認(rèn)區(qū)間段為1900年到當(dāng)今年份
本人使用了bootstrap,class請(qǐng)參照bootstrap的相關(guān)說(shuō)明
下面是html 內(nèi)容:
<div class="col-sm-9">
<label class="checkbox-inline">
<select node-type="birthday_year" name="birthday_y" id="birthday_y">
<option value=""></option>
</select><span>年</span>
</label>
<label class="checkbox-inline">
<select node-type="birthday_month" name="birthday_m" id="birthday_m">
<option value=""></option>
</select><span>月</span>
</label>
<label class="checkbox-inline">
<select node-type="birthday_month" name="birthday_d" id="birthday_d">
<option value=""></option>
</select><span>日</span>
</label>
<input type="hidden" name="birth" id="birth" value="2016/2/12">
<label class='checkbox-inline text-warning hidden' id="birth_error_info"><i class='fa fa-warning'>請(qǐng)輸入完整生日</i></label>
</div>
下面是js 的實(shí)現(xiàn):
//設(shè)置生日的轉(zhuǎn)換和獲取
var date=new Date();
var year=date.getFullYear();
for(var i=year;i>=1900;i--){
$("#birthday_y").append("<option value="+i+" label="+i+">"+i+"</option>");
}
$('#birthday_y').change(function(){
var birth_year=$('#birthday_y').val();
if(birth_year!=""){
var birth_month=$('#birthday_m').val();
if(birth_month!=""){
if(birth_month=="2"){
if((birth_year%4==0 && birth_year%100!=0) || (birth_year%400==0)){
$("#birthday_d").append("<option value=" + 29 + " label=" + 29 + ">" + 29 + "</option>");
}else{
$("#birthday_d option[value='29']").remove();
}
}
}else {
for (var i = 1; i <= 12; i++) {
$("#birthday_m").append("<option value=" + i + " label=" + i + ">" + i + "</option>");
}
}
}else{
$("#birthday_m").html("<option value=''></option>");
$("#birthday_d").html("<option value=''></option>");
}
checkBirthday();
});
$('#birthday_m').change(function(){
var birth_year=$('#birthday_y').val();
var birth_month=this.value;
var birth_day=$('#birthday_d').val();
if(birth_month!=""){
switch (birth_month){
case "1":case "3":case "5":case "7":case "8":case "10":case "12":
if(birth_day=="") {
$("#birthday_d").empty();
$("#birthday_d").append("<option value='' ></option>");
for (var i = 1; i <= 31; i++) {
$("#birthday_d").append("<option value=" + i + " label=" + i + ">" + i + "</option>");
}
}else {
switch ($("#birthday_d option:last").attr("value")){
case "28":$("#birthday_d").append("<option value=" + 29 + " >" + 29 + "</option>");
case "29":$("#birthday_d").append("<option value=" + 30 + " >" + 30 + "</option>");
$("#birthday_d").append("<option value=" + 31 + " >" + 31 + "</option>");break;
case "30":$("#birthday_d").append("<option value=" + 31 + " >" + 31 + "</option>");
break;
default :break;
}
}
break;
case "4":case "6":case "9": case "11":
if(birth_day=="") {
$("#birthday_d").empty();
$("#birthday_d").append("<option value='' ></option>");
for (var i = 1; i <= 30; i++) {
$("#birthday_d").append("<option value=" + i + " label=" + i + ">" + i + "</option>");
}
}else{
switch ($("#birthday_d option:last").attr("value")){
case "28":$("#birthday_d").append("<option value=" + 29 + " >" + 29 + "</option>");
case "29":$("#birthday_d").append("<option value=" + 30 + " >" + 30 + "</option>");
case "31":$("#birthday_d option[value='31']").remove();
break;
default :break;
}
}
break;
case "2":
if(birth_day==""){
if((birth_year%4==0 && birth_year%100!=0) || (birth_year%400==0)){
for(var i=1;i<=29;i++){
$("#birthday_d").append("<option value="+i+" label="+i+">"+i+"</option>");
}
}else{
for(var i=1;i<=28;i++){
$("#birthday_d").append("<option value="+i+" label="+i+">"+i+"</option>");
}
}}else{
$("#birthday_d option[value='31']").remove();
$("#birthday_d option[value='30']").remove();
if((birth_year%4==0 && birth_year%100!=0) || (birth_year%400==0)){
}else{
$("#birthday_d option[value='29']").remove();
}
}
break;
default :break;
}
}
checkBirthday();
});
$('#birthday_d').change(function() {
checkBirthday();
}
);
$('#birthday_d').focus(
function(){
if($('#birthday_m').val()==""){
$("#birthday_d").empty();
$("#birthday_d").append("<option value='' ></option>");
}
}
);
//根據(jù)后臺(tái)提供的數(shù)據(jù),填充用戶的值
var birth_value=$('#birth').val();
if(birth_value!="") {
var date1 = new Date(birth_value);
var b_year=date1.getFullYear();
var b_month=date1.getMonth()+1;
var b_day=date1.getDate();
$("#birthday_y").find("option[value='"+b_year+"']").attr("selected","selected");
if($('#birthday_y').val()!="") {
for (var i = 1; i <= 12; i++) {
$("#birthday_m").append("<option value=" + i + " label=" + i + ">" + i + "</option>");
}
}
$("#birthday_m").find("option[value='"+b_month+"']").attr("selected","selected");
switch (b_month){
case 1:case 3:case 5:case 7:case 8:case 10:case 12:
for (var i = 1; i <= 31; i++) {
$("#birthday_d").append("<option value=" + i + " label=" + i + ">" + i + "</option>");
}
break;
case 4:case 6:case 9: case 11:
$("#birthday_d").append("<option value='' ></option>");
for (var i = 1; i <= 30; i++) {
$("#birthday_d").append("<option value=" + i + " label=" + i + ">" + i + "</option>");
}
break;
case 2:
if((b_year%4==0 && b_year%100!=0) || (b_year%400==0)){
for(var i=1;i<=29;i++){
$("#birthday_d").append("<option value="+i+" label="+i+">"+i+"</option>");
}
}else{
for(var i=1;i<=28;i++){
$("#birthday_d").append("<option value="+i+" label="+i+">"+i+"</option>");
}
}
break;
default :break;
}
$("#birthday_d").find("option[value='"+b_day+"']").attr("selected","selected");
}
//驗(yàn)證生日是否輸入完整
function checkBirthday(){
var b_year= $('#birthday_y').val();
var b_month=$('#birthday_m').val();
var b_day=$('#birthday_d').val();
if(b_year!=""&&b_month!=""&&b_day!=""){
$('#birth').val(b_year+"-"+b_month+"-"+b_day);
$('#birth_error_info').addClass("hidden");
}else{
$('#birth').val("");
$('#birth_error_info').removeClass("hidden");
}
}
如果大家還想深入學(xué)習(xí),可以點(diǎn)擊這里進(jìn)行學(xué)習(xí),再為大家附兩個(gè)精彩的專題:Bootstrap學(xué)習(xí)教程 Bootstrap實(shí)戰(zhàn)教程
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助。
- 基于 Bootstrap Datetimepicker 聯(lián)動(dòng)
- 基于BootStrap multiselect.js實(shí)現(xiàn)的下拉框聯(lián)動(dòng)效果
- Bootstrap select下拉聯(lián)動(dòng)(jQuery cxselect)
- jQuery基于BootStrap樣式實(shí)現(xiàn)無(wú)限極地區(qū)聯(lián)動(dòng)
- 基于AngularJs + Bootstrap + AngularStrap相結(jié)合實(shí)現(xiàn)省市區(qū)聯(lián)動(dòng)代碼
- 基于Bootstrap實(shí)現(xiàn)城市三級(jí)聯(lián)動(dòng)
相關(guān)文章
JS如何設(shè)置滾動(dòng)屬性默認(rèn)自動(dòng)滾動(dòng)到底部(overflow:scroll;)
這篇文章主要給大家介紹了關(guān)于JS如何設(shè)置滾動(dòng)屬性默認(rèn)自動(dòng)滾動(dòng)到底部(overflow:scroll;)的相關(guān)資料,通過(guò)本文介紹的的JavaScript代碼示例,你可以實(shí)現(xiàn)滾動(dòng)條默認(rèn)在最底部的效果,需要的朋友可以參考下2023-10-10
zTree實(shí)現(xiàn)節(jié)點(diǎn)修改的實(shí)時(shí)刷新功能
在實(shí)際應(yīng)用中會(huì)遇到動(dòng)態(tài)操作樹各節(jié)點(diǎn)的需求,在增加樹節(jié)點(diǎn)后如何實(shí)時(shí)動(dòng)態(tài)刷新樹就十分有必要了。這篇文章主要介紹了zTree實(shí)現(xiàn)節(jié)點(diǎn)修改的實(shí)時(shí)刷新功能,需要的朋友可以參考下2017-03-03
layui實(shí)現(xiàn)數(shù)據(jù)表格自定義數(shù)據(jù)項(xiàng)
今天小編就為大家分享一篇layui實(shí)現(xiàn)數(shù)據(jù)表格自定義數(shù)據(jù)項(xiàng),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-10-10
使用Mock.js生成前端測(cè)試數(shù)據(jù)
這篇文章主要介紹了使用Mock.js生成前端測(cè)試數(shù)據(jù),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12
交叉觀察器?IntersectionObserver用法詳解
這篇文章主要為大家介紹了交叉觀察器?IntersectionObserver用法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-10-10
使用JavaScript實(shí)現(xiàn)小球按照貝塞爾曲線運(yùn)動(dòng)
要在 JavaScript 中實(shí)現(xiàn)一個(gè)按照貝塞爾曲線運(yùn)動(dòng)的小球,關(guān)鍵是要掌握貝塞爾公式的基本原理和實(shí)現(xiàn)方式,以及使用 JavaScript 處理動(dòng)畫和物理運(yùn)算,感興趣的小伙伴跟著小編一起來(lái)看看吧2024-10-10

