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 に答える