2

我在这里概述了一个非常烦人的错误:<select> 仅显示所选选项的第一个字符,我需要一种方法来删除我的框中的 display:none 以避免此错误。有什么建议么?

继承人绑定:

<select data-bind="options: Values, optionsText: 'DisplayNameWithCost', optionsCaption: ControlCaption, selectedOptions: SelectedValues, event: { change: $root.resolveAllAttributeUi }, disable: IsDisabled"></select>

编辑:我已经设法弄清楚它selectedOptions: SelectedValues是空白的,它没有在 IE9 中选择任何东西。至于修复我不确定。这是在 IE9 中尝试的示例http://jsfiddle.net/9CaTa/

4

1 回答 1

0

selectedOptions仅用于多选列表。请参阅http://knockoutjs.com/documentation/selectedOptions-binding.html

您可能想改用value绑定:http: //jsfiddle.net/mbest/9CaTa/2/

编辑:

selectedOptions不适用于optionsCaption,但您可以通过创建包装的自定义绑定使其至少默认选择第一项selectedOptions

ko.bindingHandlers.mySelectedOptions = ko.utils.extend({}, ko.bindingHandlers.selectedOptions);
ko.bindingHandlers.mySelectedOptions.update = function(element) {
    ko.bindingHandlers.selectedOptions.update.apply(this, arguments);
    if (element.selectedIndex === -1)
        element.selectedIndex = 0;
}

这是您使用此绑定的示例:http: //jsfiddle.net/mbest/9CaTa/3/

我注意到如果我选择标题,selected数组将不会被清除。相反,它将只有一个undefined项目。如果你不想这样,你也可以在你的自定义更新函数中检查它,然后清除数组:http: //jsfiddle.net/mbest/9CaTa/4/

于 2012-08-02T21:18:17.707 回答