如何更改 select2 选择框的值

How to change the value of select2 selectbox?

本文关键字:选择 何更改 select2      更新时间:2023-09-26
days_of_week = [{id: 0, text: "Monday"},
                {id: 1, text: "Tuesday"},
                {id: 2, text: "Wednesday"},
                {id: 3, text: "Thursday"},
                {id: 4, text: "Friday"},
                {id: 5, text: "Saturday"},
                {id: 6, text: "Sunday"}]

$("#test").select2({
        data: days_of_week
    })

$("#date").datepicker({
        format: "yyyy-mm-dd"
        })

$("#date").datepicker().on("changeDate", function(event) {
        var selected_date = $("#date").val()
        var day_name = moment(selected_date, "YYYY-MM-DD").format("dddd")
        $("#test").val(day_name)
    })

所以基本上我在这里试图做的是从datepicker中选择一个日期使用 moment 获取该日期的日期名称,并将$("#test").select2()的值更改为所选day_name但最终发生的是 $("#test").select2() 的值已更改,但它已更改为空。

比如说。我 select2 的默认值是一个"Monday"选择一个日期,select2 的当前值现在为空。

我们如何使用 jquery 更改 select2 的值?

我已经在这里阅读了其他较旧的帖子。 但它们不起作用。

在此示例中,select2 选择框的value是 ID (0-6)。您正在尝试将值设置为选择框的标签。此外,您还需要使用...在select2框中手动触发"更改"事件。 .trigger("change");根据文档。

所以你必须做这样的事情:

$("#date").datepicker().on("changeDate", function(event) {
    var selected_date = $("#date").val();
    //var day_name = moment(selected_date, "YYYY-MM-DD").format("dddd");
    var day_index = moment(selected_date, "YYYY-MM-DD").format("d"); //returns day of week 0-6
    $("#test").val(day_index).trigger("change");
})

PS:你的javascript缺少一大堆分号