Ограничить количество дней в jQuery Datepicker с помощью флажков - PullRequest
2 голосов
/ 29 января 2011

Я хотел бы ограничить дни в jquery datepicker с помощью флажков - я уже успел ограничить дни (жестко запрограммированные), однако не уверен, как действовать, чтобы они динамически менялись.

Вот мой код ...

<table id="selectdays">
<tr>
<td><input type="checkbox" value="sun"></td>
<td><input type="checkbox" value="mon"></td>
<td><input type="checkbox" value="tue"></td>
<td><input type="checkbox" value="wed"></td>
<td><input type="checkbox" value="fri"></td>
<td><input type="checkbox" value="sat"></td>
<td><input type="checkbox" value="sun"></td>
</tr>
</table>

<input type="text" id="datepicker">


$(function() {
    $( "#datepicker" ).datepicker({
        showOn: "button",
        buttonImage: "../images/calendar.jpg",
        buttonImageOnly: true,
        dateFormat: 'DD, MM d, yy',
        minDate: 0,
        beforeShowDay: nonWorkingDates,
});

function nonWorkingDates(date){
    var day = date.getDay(), Sunday = 0, Monday = 1, Tuesday = 2, Wednesday = 3, Thursday = 4, Friday = 5, Saturday = 6;
    var closedDays = [[Monday], [Tuesday]];
    for (var i = 0; i < closedDays.length; i++) {
        if (day == closedDays[i][0]) {
            return [false];
        }

    }
    return [true];
}

});

Ответы [ 2 ]

3 голосов
/ 29 января 2011

попробуйте это:

<table id="selectdays">
    <tr>
        <td><input type="checkbox" value="1">Monday</td>
        <td><input type="checkbox" value="2">Tuesday</td>
        <td><input type="checkbox" value="3">Wednesday</td>
        <td><input type="checkbox" value="4">Thursday</td>
        <td><input type="checkbox" value="5">Friday</td>
        <td><input type="checkbox" value="6">Saturday</td>
        <td><input type="checkbox" value="0">Sunday</td>
    </tr>
</table>

Рабочая версия:

var _selectedDays=new Array();
$(function() {
    $( "#datepicker" ).datepicker({
        showOn: "button",
        buttonImage: "css/images/calendar.png",
        buttonImageOnly: true,
        dateFormat: 'DD, MM d, yy',
        minDate: 0,
        beforeShowDay: nonWorkingDates,
    });
    $("#selectdays input:checkbox").change(function(){
        var v=$(this).attr("value")*1;
        if($(this).is(":checked")){
            if($.inArray(v,_selectedDays)<0){
                _selectedDays.push(v);
            }
        }else{
            var f=$.inArray(v,_selectedDays);
            if(f>=0){
                _selectedDays.splice(f,1);
            }               
        }
    });
});

function nonWorkingDates(date){
    var day = date.getDay();
    for(var i=0;i<_selectedDays.length;i++){
        if(day==_selectedDays[i]){return [false];}
    }       
    return [true];
}
0 голосов
/ 29 января 2011

Начальная точка может быть:

<table id="selectdays">
 <tr>
  <td><input type="checkbox" value="1">Monday</td>
  <td><input type="checkbox" value="2">Tuesday</td>
  <td><input type="checkbox" value="3">Wednesday</td>
  <td><input type="checkbox" value="4">Thursday</td>
  <td><input type="checkbox" value="5">Friday</td>
  <td><input type="checkbox" value="6">Saturday</td>
  <td><input type="checkbox" value="0">Sunday</td>
 </tr>
</table>

<input type="text" id="datepicker">

$(function() {
    $( "#datepicker" ).datepicker({
        showOn: "button",
        buttonImage: "../images/calendar.jpg",
        buttonImageOnly: true,
        dateFormat: 'DD, MM d, yy',
        minDate: 0,
        beforeShowDay: nonWorkingDates,
});

function nonWorkingDates(date){
    var day = date.getDay();
    if ($('#selectdays input[value='+day+']').is(':checked')) {
        return [false];
    }

    return [true];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...