簡體   English   中英

Select2下拉問題。 如何將日期選擇器中的日期填充到select2下拉列表中?

[英]Select2 dropdown issue. How do i populate a date from datepicker into a select2 dropdown?

我正在運行Select2版本3.5.3。 選擇日期后,在將日期附加到select2輸入控件時遇到麻煩。 鑒於我正在動態創建這些輸入,正確的方法是什么? 為了更好地解釋即時消息的功能,我將兩個輸入與日期選擇器相連。 另外,我也將它們作為select2。 我用硬編碼對象初始化我的select2。 每當我從下拉菜單中選擇選項calendar ,日期選擇器就會打開,並讓我選擇一個日期。 一旦有了日期,我就會嘗試以字符串形式獲取日期並將其附加到相同的下拉列表中。 當我這樣做時,我可以確認字符串日期是有效的字符串。 我不知道如何將此字符串附加到select2,因為我已經打開了大約50個選項卡和select2文檔。 因此,我希望有人可以澄清為什么不附加新的選擇和價值。 $input2$input相同,但是由於所描述的問題,我沒有進一步開發。

const dateRangeFilterOptions = [
                {id: "@calendar", text: "Calendar"},
                { id: "@thisDay", text: "Today" },
                { id: "@thisDay-1", text: "Yesterday" },
                { id: "@thisDay-7,@thisDay", text: "Last 7 days"  },
                { id: "@thisDay-14,@thisDay", text: "Last 14 days" },
                { id: "@thisMonth", text: "This month" },
                { id: "@thisDay-30,@thisDay", text: "Last 30 days" },
                { id: "@thisDay-60,@thisDay", text: "Last 60 days" }
            ]; 
            $input.addClass("datePicker dateFilter");
            const datepickerOptions: DatepickerOptions = {
                clearBtn: true,
                todayHighlight: true,
            };
            $input.datepicker(datepickerOptions);
            const $input2: JQuery = $("<input type='text'>")
                .attr("id", addlFilter.FilterId)
                .attr("data-id", `${addlFilter.FilterId}End`)
                .addClass(
                    `form-control input-sm datePicker dateFilter addlFilter2 ${addlFilter.QueueKeys.join(" ")}`);
            $input2.datepicker(datepickerOptions);
            const $row: JQuery = $("<div class='row'></div>");
            const $colMd6: JQuery = $("<div class='col-md-6' style='padding-right:2px'></div>");
            const $2colMd6: JQuery = $("<div class='col-md-6' style='padding-left:2px'></div>");

            $input.prop("placeholder", "Start Date");
            $input2.prop("placeholder", "End Date");
            $input.appendTo($colMd6);
            $input2.appendTo($2colMd6);
            $colMd6.appendTo($row);
            $2colMd6.appendTo($row);
            $row.appendTo($formGroup);
            var dateSelected = "";

            $input.select2({
                placeholder: "Select a date",
                multiple: false,
                minimumResultsForSearch: -1,
                data: dateRangeFilterOptions
            }).on("change", function (e) {
                var el = $(this);
                if (el.val() === "@calendar") {
                    $input.datepicker("show");
                    $input.datepicker()
                        .on('changeDate', function (date: any) {
                            if (date.date.toString() === "") {
                                dateSelected = "";
                            } else {
                                dateSelected = date.date.toString();
                                var newOption = new Option(dateSelected, "@calendarDate", false, false);
                                $input.append(newOption).trigger('change');
                            }
                        });
                }

                });

            $input2.select2({
                placeholder: "Select a date",
                multiple: false,
                minimumResultsForSearch: -1,
                data: dateRangeFilterOptions
            });

在嘗試了不同的方法之后,事實證明,對於<4.00版本,更新select2的方法是更新其data:屬性。 就我而言,這是對象數組。 這樣做會將新的選項和值添加到select2下拉列表中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM