2013-11-28 175 views
0

我有一個帶日期選擇器的表單,用戶可以在其中預訂導覽。如果他們在12月份選擇了某個日期,我希望自動禁用該表單上的「是/否」下拉列表。我的日期選擇器也有禁用的日期。 datepicker似乎正在工作,但我似乎無法從日期選擇器中返回選定的月份(我嘗試將它打印到屏幕上,在警報中使用它等)。顯然,我的代碼存在問題,我不是一個JS/jQuery專家,所以我無法自己弄清楚它!根據日期選擇器選擇禁用表單字段

jQuery(document).ready(function($) { 

// INITIALIZE DATEPICKER 
jQuery(function() { 
     jQuery("#myDatepicker").datepicker({ 
      beforeShowDay: unavailableDates, 
      changeMonth: true, 
      minDate: 1 
    }); 

}); 

// DISABLE DATES WITHIN DATEPICKER & GET MONTH 
function unavailableDates(date) { 
     dmy = date.getDate() + "-" + (date.getMonth() + 1) + "-" + date.getFullYear(); 
        if (jQuery.inArray(dmy, theUnavailableDates) == -1) { 
      return [true, ""]; 
     } else { 
      return [false, "", "Unavailable"]; 
     } 

     var selectedMonth = date.getMonth(); 
     if (selectedMonth == 11) { 
      jQuery("#tourExtras").hide(); 
      alert("this means its working"); 
     } 
     else { 
      jQuery("tourExtras").show(); 
      alert("this means its not working"); 
     } 
} 

// DISABLED DATES 
var theUnavailableDates = ["1-1-2014", "2-1-2014", "3-1-2014"]; 

現在,我甚至不能得到警報工作,所以我假設它的東西做我如何正在做var selectedMonth = date.getMonth();

任何幫助將非常感激!

回答

1

您的函數「unavailableDates(date)」似乎是正確的,但我認爲datepicker的屬性「beforeShowDay」它不是你想要的。

根據jQueryUI's Datepicker API

enter image description here

所以,我認爲,你想要的功能是:ONSELECT

enter image description here

您的代碼應該是這樣的:

$("#datepicker").datepicker({ 
    onSelect: function(dateText, inst) { 
     unavailableDates(dateText); 
    }, 
    changeMonth: true, 
    minDate: 1 
}); 

// DISABLE DATES WITHIN DATEPICKER & GET MONTH 
function unavailableDates(dateText) { 
    var date = new Date(dateText); //convert text to date 

     dmy = date.getDate() + "-" + (date.getMonth() + 1) + "-" + date.getFullYear(); 
     if (jQuery.inArray(dmy, theUnavailableDates) == -1) { 
      alert("this date is NOT on theUnavailableDates array"); 
      //do something 
     } else { 
      alert("this date is on theUnavailableDates array!") 
      //do something 
     } 

    var selectedMonth = date.getMonth() + 1; //the month is based on jan=0,feb=1,... 
    if (selectedMonth == 11) { 
     jQuery("#tourExtras").hide(); 
     alert("this is november");   
    } 
    else { 
     jQuery("tourExtras").show(); 
     alert("this is not november"); 
    } 
} 

// DISABLED DATES 
var theUnavailableDates = ["1-1-2014", "2-1-2014", "3-1-2014"]; 

您可以點擊此處查看jsfiddle

+0

嘿,謝謝!現在我的問題是如何通過警報通過dateText?或者更好的是,我如何閱讀dateText並說出它是否等於12月份,然後顯示警報? – Iconoclast

+0

瞭解dateText是一個字符串,您必須在函數開始時將其轉換爲Date,其餘的繼續等於。 您可以使用以下命令將字符串轉換爲日期:new Date(「字符串格式的日期」)。因此,你的函數的開始將是這樣的: 函數unavailableDates(dateText){ var date = new Date(dateText); ...(其餘的功能) 希望它有幫助。 – fabriciorissetto

+0

我編輯了我的答案。覈實。 =) – fabriciorissetto

相關問題