为什么这个选择菜单在jQuery和JQM的新版本组合中失败了?

时间:2014-12-18 22:30:14

标签: javascript jquery ajax jquery-mobile

想要扩展此代码,但注意到它无法在新版本的jQuery和JQM中限制选择(按计数)。

Here is a fiddle表明它适用于jQuery 1.8.3和JQM 1.2.0。

jQuery(减去Select本身)代码在这里:

$(document).on("pageinit", function () {
    $("#select").on("change", function () {
        var selected = $("option:selected", this).length;
        if (selected == 4) {
            $("option:not(:selected)", this).prop("disabled", true);
            $(this).selectmenu("refresh");
        }
        if (selected < 4) {
            $("option:disabled", this).prop("disabled", false);
            $(this).selectmenu("refresh");
        }
         arr = new Array();
                    $(this).find("option:selected").each(function(index, item) {
                        arr.push($(item).val());
                        console.log(arr);
                    });
    });
});

您可以通过切换到jQuery 1.11.0和JQM 1.4.4来模拟小提琴中的失败。

然后,选择应该阻止但允许的第5个选项。

我错过了什么会导致新版本失败?

PS:对于使用$ .ajax GET填充选择框的最佳方法的任何指针也都很受欢迎,因为这将是我的下一步。我使用POST来保存选择,但希望向用户显示他们需要更新时已保存的内容。

1 个答案:

答案 0 :(得分:1)

您必须将true作为第二个参数传递给selectmenu函数,以强制它在禁用该选项后刷新菜单。 Check this Fiddle

$(this).selectmenu("refresh", true);