淘汰赛v3,选择多重选择 - 标记

时间:2014-07-24 15:39:52

标签: jquery knockout.js twitter-bootstrap-3 jquery-chosen

我已经开始扩展所选择的库,通过使用knockout observables创建一个on fly fly标记功能来保存选定的值,但是我遇到了几个问题。希望有人可以提供一些帮助。

观察到的问题:
输入两个以上的标签会删除第一个条目后添加的任何项目,并将其替换为最后输入的标签。从标签列表中选择选项效果很好,但是输入新标签会强制执行与前面提到的相同的行为。

自定义KO装订:

ko.bindingHandlers.chosenTagging = {
    init: function (element, valueAccessor, allBindings) {
        $(element).chosen({ width: '100%', disable_no_results: true, enable_custom_content: true, placeholder_text_multiple: 'Enter Tag(s)' });

        var valuesObservable = allBindings.get('selectedOptions');
        var updateList = function () {
            $(element).trigger('chosen:updated');
        }

        if (valuesObservable && typeof (valuesObservable.subscribe) == 'function') {
            valuesObservable.subscribe(updateList);
        }
    },
    update: function (element, valueAccessor, allBindings) {
        $(element).trigger('chosen:updated');
    }
};

JSFiddle:
http://jsfiddle.net/S3H2A/5/

注意:如果您在小提琴中添加了所选的JS,请说明进行更改的行号。

此处发现类似帖子:Add values to a chosen multiselect

1 个答案:

答案 0 :(得分:1)

你有一个:

$(element).trigger('chosen:updated');

一个

$(element).trigger('liszt:updated');

我认为最后一个已从选中删除,它是前一版本的语法。 (虽然这可能不是你问题的答案)

另一个问题是当ko.bindingHandlers.chosenTagging.update函数被调用时 绑定更改中的可观察对象,但没有(chosenTagging: { })。

至于你的真正问题,我认为selectedOptions绑定在没有options绑定的情况下效果不佳。
使用options绑定可以正常工作:demo

如果您希望保留使用enable_custom_content_mode输入自定义输入的可能性,则必须找到解决方法。