javascript - 根据事件动态禁用动态生成的 jQuery select2 中的几个选项

标签 javascript jquery backbone.js underscore.js jquery-select2

我一直在尝试根据在另一个 Select2 上选择的选项动态禁用动态生成的 jQuery Select2 中的几个选项。我已经尝试了一些建议,但没有成功。

这个( how to let jquery select2 disable one option dynamically? )是最接近的,但同样,就我而言,我还没有 <select>带有已写入的选项,但是即时生成的。

选项的值和文本是从表中提取的,并且会随着时间而变化,因此更喜欢实现当前的方式(而不是上面的链接中的方式)。如果这根本不可能,那么也许 {{templating}}也许是最后的手段。下面的示例代码,我还在此处放置了一个演示:http://jsfiddle.net/s_j_l/gqbzh5y0/23/

HTML:

User Roles:
<div id="userr"></div>
Quarters:
<div id="qtr"></div>

JS:

$("#userr").select2({
        data: _.map(userroles, function (json) {
            return {
                id: json.roleid,
                text: json.role
            }
        }),
        placeholder: 'Select User Role',
        allowClear: true,
        containerCssClass: 'select-block-level'
    }).on('change', function (e) {
        if (e.val == 'user') $("#qtr").find('option[value="2013Q4"]').attr('disabled', 'disabled');
    });

    $("#qtr").select2({
        data: _.map(quarters, function (json) {
            return {
                id: json.qid,
                text: json.quarter
            }
        }),
        placeholder: 'Select Quarters',
        allowClear: true,
        containerCssClass: 'select-block-level'
    }).on('change', function (e) {});
});

数据:

{"userroles":[{"roleid":"admin","role":"Admin"},{"roleid":"user","role":"User"},{"roleid":"audit","role":"Audit"},{"roleid":"client","role":"Client"}],"quarters":[{"qid":"2014Q3","quarter":"2014 Q3"},{"qid":"2014Q2","quarter":"2014 Q2"},{"qid":"2014Q1","quarter":"2014 Q1"},{"qid":"2013Q4","quarter":"2013 Q4"},{"qid":"2013Q3","quarter":"2013 Q3"},{"qid":"2013Q2","quarter":"2013 Q2"},{"qid":"2013Q1","quarter":"2013 Q1"},{"qid":"2012Q4","quarter":"2012 Q4"},{"qid":"2012Q3","quarter":"2012 Q3"},{"qid":"2012Q2","quarter":"2012 Q2"},{"qid":"2012Q1","quarter":"2012 Q1"}]}

最佳答案

好吧,我已经尝试过编写工作代码但失败了。

理论是,符合:

    if (e.val == 'user') $("#qtr").find('option[value="2013Q4"]').attr('disabled', 'disabled');

您可以不复制此数组,而是将其放入对象中,然后删除具有所需值的值。然后,完成后将其转回 json。

Adding/removing items from JSON data with JQuery

关于javascript - 根据事件动态禁用动态生成的 jQuery select2 中的几个选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25698387/

相关文章:

javascript - 安全错误 - 该页面包含来自第三方域的一个或多个脚本文件

javascript - 使用 jQuery 动态更改表单字段选项(并恢复以前选择的选项)

javascript - Backbone Model Fetch() 正在向 url 添加额外的参数

javascript - 必须在 Backbone.js 中指定 'url' 属性或函数错误

javascript - 如何在 Backbone 中向 PUT 请求添加尾部斜杠?

注入(inject)的 html 上的 Javascript 加载事件

javascript - 鼠标移动背景跟随 Y 但不是 X 轴

javascript - 如何从 HTML5 使用 native 代码 (windows)

php - 将 S_POST 数据传递给 jquery

javascript - 为 Backbone 轨道应用程序构建自定义协议(protocol)