2016-04-08 29 views
0

Olayların bulunduğu hücreler için arka plan rengini değiştirmek istiyorum. Bu gün için bu durumda jQuery DatePicker olayın bulunduğu hücreler için arka plan rengi (açık)

: 2016-04-07

ben SO burada bir çözüm bulamazsanız, birisi bana yardımcı olabilir umuyoruz. size

JS kodu ederiz:

// I WANT TO CHANGE BACKGROUND-COLOR FOR THIS DAY 
var events = {"2016-04-07":[{"title":"Friday!!!!","description":"Weekend is starting!!!"}]}; 

// Setup our datepicker 
    $("#datepicker").datepicker({ 
    dateFormat: "yy-mm-dd", 
    onSelect: findEvents 
    }); 

// Provide a function to find and display events 
    function findEvents (date) { 
// Start by emptying our data container 
    $("#dateevents").empty(); 
// Potential date object 
    var dateObj = events[date]; 
// If no events exist for the selected date 
if (!dateObj) { 
    return $("#dateevents").html("<h2>" + date + ": No Events</h2>"); 
    } 
    // If we've made it this far, we have events! 
$("#dateevents").html("<h2>" + date + ": " + dateObj.length + " Events Planned</h2>"); 
// Cycle over every event for this date 
$.each(dateObj, function (index, event) { 
// Build a list for each event 
var $list = $("<ul>"); 
// Add all event details to list 
$.each(event, function (name, desc) { 
    $("<li>").html(name + ": " + desc).appendTo($list); 
}); 
// Place list in container 
$list.appendTo("#dateevents"); 
}); 
} 

Fiddle: http://jsfiddle.net/qSCek/6/

+0

Olası kopyalar [bir jquery datepicker hücre rengini değiştirmek için nasıl] (http://stackoverflow.com/questions/2906266/how-to-change-the-cell- renk-of-a-jquery-datepicker) – TyrantsBeard

+0

@TyrantsBeard on'Yazdır ancak tarih seçicisi yüklendiğinde –

cevap

0

bir işleve koymak ve aylık değişim vb diyoruz isteyebilirsiniz, böyle bir şey deneyin html üzerinde döngü

// Provide some event data in JSON format 
var events = {"2016-04-07":[{"title":"Friday!!!!","description":"Weekend is starting!!!"}]}; 

// Setup our datepicker 
$("#datepicker").datepicker({ 
    dateFormat: "yy-mm-dd", 
    onSelect: findEvents, 
}); 


$("td[data-handler='selectDay']").each(function(index,value){ 
    var month = $(value).attr("data-month"); 
    var year = $(value).attr("data-year"); 
    var day = $(value).next().text(); 

    var date = year+"-"+(parseInt(month) + 1)+"-"+day 


    $.each(events, function(i, v) { 
    var parts = i.split("-") 
    parts[1] = parts[1].replace("0","") 
    parts[2] = parts[2].replace("0","") 
    var i = parts[0]+"-"+parts[1]+"-"+parts[2] 
    if (i == date) { 
     console.log("hit") 
     console.log(date) 
     $(value).next().css("background","red") 
    } 
    }); 
}) 
// Provide a function to find and display events 
function findEvents (date) { 
    // Start by emptying our data container 
    $("#dateevents").empty(); 
    // Potential date object 
    var dateObj = events[date]; 
    // If no events exist for the selected date 
    if (!dateObj) { 
    return $("#dateevents").html("<h2>" + date + ": No Events</h2>"); 
    }  
    // If we've made it this far, we have events! 
    $("#dateevents").html("<h2>" + date + ": " + dateObj.length + " Events Planned</h2>"); 
    // Cycle over every event for this date 
    $.each(dateObj, function (index, event) { 
    // Build a list for each event 
    var $list = $("<ul>"); 
    // Add all event details to list 
    $.each(event, function (name, desc) { 
     $("<li>").html(name + ": " + desc).appendTo($list); 
    }); 
    // Place list in container 
    $list.appendTo("#dateevents"); 
    }); 
} 

keman http://jsfiddle.net/qSCek/7/

+0

Güne tıkladıktan sonra css'i korursaydı mükemmel olurdu. Ancak çok teşekkür ederim! –

+0

Sorun, ayı değiştirdiğinizde, css öğede kalmıyor. Datepicker'da "onChangeMonthYear" seçeneğini denedim ve – Lulylulu

+0

@Lulylulu evet çalışmıyor! Çok teşekkürler –

0

İşte yaptığım şey bu. Sanırım sorun, görünüm oluşturulmadan önce onChangeMonthYear geri aramasının çağrılmasıdır. Bu yüzden sorunu çözmek için zaman aşımı yaptım.

// Setup our datepicker 
$("#datepicker").datepicker({ 
    dateFormat: "yy-mm-dd", 
    onSelect: findEvents, 
    onChangeMonthYear: function(year, month) { 
    setTimeout(changeBackground, 1, year, month) 
    }  
}); 

var d = new Date(); 
changeBackground(d.getFullYear(), d.getMonth() + 1); 

function changeBackground(year, month) { 
    for (var date in events) { 
    var d = new Date(date); 
    // if same day and year 
    if (d.getFullYear() === year && d.getMonth() + 1 === month) { 
     var day = d.getDate(); 
     // retrieve all elements containing day 
     var elements = $('a:contains(' + day + ')'); 
     elements.each(function(index) { 
     if ($(this).text() == day) { 
      $(this).css("background", "red"); 
     } 
     }); 
    }; 
    } 
} 

Ve here is the fiddle

ait
+0

Farklı bir günü tıklarsam arka plan kaybolur, bana yardım edebilir misiniz? Fiddle'ınızda deneyin lütfen –

+0

'changeBackground 'öğesine' onSelect' geri arama işlevi 'findEvents' içinde bir çağrı ekleyebilirsiniz. Kemanı örnekle güncelledim. – Lulylulu