Javascript 如何在Datepicker中与foreach一起使用beforeShowDay

Javascript 如何在Datepicker中与foreach一起使用beforeShowDay,javascript,jquery,datepicker,Javascript,Jquery,Datepicker,我有一个日期选择器和一个带有日期值的下拉列表。必须在datepicker中禁用dropdownlist中的日期,我会这样尝试: inp.datepicker({ dateFormat: dateFormat, beforeShowDay: function (date) {

我有一个日期选择器和一个带有日期值的下拉列表。必须在datepicker中禁用dropdownlist中的日期,我会这样尝试:

  inp.datepicker({
                            dateFormat: dateFormat,
                            beforeShowDay: function (date) {                              

                                $("#form_one3 > option:gt(0)").each(function (indx, option) {
                                    var v = [$(this).text()];
                                    //alert(array);

                                    var m = date.getMonth(), d = date.getDate(), y = date.getFullYear();
                                    for (i = 0; i < v.length; i++) {
                                        if ($.inArray(y + '-' + (m + 1) + '-' + d, v) != -1) {
                                            var string = jQuery.datepicker.formatDate(dateFormat, date);
                                            return [v.indexOf(string) == -1];
                                        }
                                    }
                                    return [true];


                                });

                            },


                            changeMonth: true,
                            changeYear: true,
                            showWeek: true,
                            firstDay: 1,
                            yearRange: "c-100:c+15",
                            showOn: inp.hasClass("ui-date-picker-onfocus") ? "focus" : "button"
                        })
; (function ($) {
    $(function () {
        $("form.xforms-form").bind({
            XForms_Enrich: function (e) {
                if ($.fn.datepicker) {
                    $("input.qmatic-dateslot", e.args.data).each(function () {
                        var inp = $(this);
                        if (inp.is(":disabled")) return;
                        var tabindex = inp.attr("tabindex");

                        var dateFormat = $.xforms.getProperty(inp, 'dateFormat') || 'd-M-yy';
                        dateFormat = dateFormat.replace(/m/g, '0').replace(/h/gi, '0').replace(/t/g, '').replace(/M/g, 'm').replace('yyyy', 'yy');

                        $("#" + inp.attr("id") + " ~ button.ui-datepicker-trigger").attr("tabindex", tabindex);

                        var clearBtn = $('<button class="ui-datepicker-clear" type="button" tabindex="' + tabindex + '">x</button>').click(function () { inp.val(''); inp.change(); return false; });
                        inp.after(clearBtn);

                        inp.datepicker({
                            dateFormat: dateFormat,


                            beforeShowDay: function (date) {
                                var dt = $.datepicker.formatDate('d-m-yy', date)
                                return [$('#form_one3 > option:gt(0)[value="' + dt + '"]').length == 0];
                            },
                            //beforeShowDay: function (date) {                              

                            //    $("#form_one3 > option:gt(0)").each(function (indx, option) {
                            //        var v = [$(this).text()];
                            //        //alert(array);

                            //        var m = date.getMonth(), d = date.getDate(), y = date.getFullYear();
                            //        for (i = 0; i < v.length; i++) {
                            //            if ($.inArray(y + '-' + (m + 1) + '-' + d, v) != -1) {
                            //                var string = jQuery.datepicker.formatDate(dateFormat, date);
                            //                return [v.indexOf(string) == -1];
                            //            }
                            //        }
                            //        return [true];


                            //    });

                            //},


                            changeMonth: true,
                            changeYear: true,
                            showWeek: true,
                            firstDay: 1,
                            yearRange: "c-100:c+15",
                            showOn: inp.hasClass("ui-date-picker-onfocus") ? "focus" : "button"
                        })
                    });
                    $("#ui-datepicker-div").hide();
                }
            }
        })
    })
})(jQuery);

这就行了!!但是我想启用dropdownlist中的日期,并禁用所有其他日期。

您可以尝试以下操作

inp=$(“输入”)
输入日期选择器({
日期格式:“dd M Y”,
beforeShowDay:功能(日期){
var dt=$.datepicker.formatDate('d-m-yy',日期)
return[$('#form_one3>选项:gt(0)[value=“”+dt+'“])。length==0];
},
变化月:对,
变化年:是的,
《秀周刊》:没错,
第一天:1,
年份范围:“c-100:c+15”,
shown:inp.hasClass(“ui日期选择器聚焦”)?“聚焦”:“按钮”
})

3-7-2015
10-7-2015
15-7-2015
19-7-2015
28-7-2015
30-7-2015

你好,阿伦,谢谢你的answare!!但它必须跳过第一个值,下拉列表中值的日期格式如下:27-7-2015共享一个选择的示例values@SavantTheIncredible更新在哪里。。。。您能否更新以显示您的案例这是一个日期的输出:谢谢!!阿伦!!但是我想要相反的结果,想要在dropdownlist中启用日期并禁用所有其他日期。
            (Selecteer datum)
                  </option>
<option value="2015-07-24T00:00:00Z">24-7-2015</option>
<option selected="selected" value="2015-07-27T00:00:00Z">27-7-2015</option>
<option value="2015-07-28T00:00:00Z">28-7-2015</option>
<option value="2015-07-29T00:00:00Z">29-7-2015</option>
<option value="2015-07-30T00:00:00Z">30-7-2015</option>
<option value="2015-07-31T00:00:00Z">31-7-2015</option>
<option value="2015-08-03T00:00:00Z">3-8-2015</option>
<option value="2015-08-04T00:00:00Z">4-8-2015</option>
<option value="2015-08-05T00:00:00Z">5-8-2015</option>
<option value="2015-08-06T00:00:00Z">6-8-2015</option>
<option value="2015-08-07T00:00:00Z">7-8-2015</option>
<option value="2015-08-10T00:00:00Z">10-8-2015</option>
<option value="2015-08-11T00:00:00Z">11-8-2015</option>
<option value="2015-08-12T00:00:00Z">12-8-2015</option>
<option value="2015-08-13T00:00:00Z">13-8-2015</option>
<option value="2015-08-14T00:00:00Z">14-8-2015</option>
<option value="2015-08-17T00:00:00Z">17-8-2015</option>
<option value="2015-08-18T00:00:00Z">18-8-2015</option>
<option value="2015-08-19T00:00:00Z">19-8-2015</option>
<option value="2015-08-20T00:00:00Z">20-8-2015</option>
<option value="2015-08-21T00:00:00Z">21-8-2015</option>
</select></div>
 beforeShowDay: function (date) {
                                var dt = $.datepicker.formatDate('yy-mm-dd', date)
                                return [$('#form_one3 > option:gt(0)[value="' + dt + 'T00:00:00Z"]').length == 0];
                            },