想要扩展此代码,但注意到它无法在新版本的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来保存选择,但希望向用户显示他们需要更新时已保存的内容。
答案 0 :(得分:1)
您必须将true
作为第二个参数传递给selectmenu
函数,以强制它在禁用该选项后刷新菜单。 Check this Fiddle
$(this).selectmenu("refresh", true);