使用Knockout实现下拉列表的问题

时间:2014-07-10 16:15:24

标签: javascript jquery knockout.js

我正在尝试使用包含少量选项的下拉菜单替换现有网站中的文本框。一切正常,期待当人员登记时,不会存储/注册该值。但是使用文本框它可以正常工作。请参阅我为下拉列表制作的以下代码:

</label>
<label class="label-4 lcol1" for="d_name-suffix"><small>(optional)</small>
<select id="d_name-suffix" style="width:auto; height:auto" data-bind="options: $root.nameSuffix, value: nameSuffix, optionsText: 'options1'" />
</label>

JS:

self.nameSuffix = ko.observable([
{ options1: "Mr" },
{ options1: "Mrs" },
{ options1: "Miss" }
]).extend({ pattern: NineElevenRegistries.inputValidation.name });

以下是为文本框实现的代码:

self.nameSuffix = ko.observable().extend({
maxLength: NineElevenRegistries.inputValidation.nameSuffixMaxLength,
pattern: NineElevenRegistries.inputValidation.name
});

2 个答案:

答案 0 :(得分:1)

您需要为值使用数组并将值存储在observable中。

self.nameSuffixes = ko.observableArray([
{ options1: "Mr" },
{ options1: "Mrs" },
{ options1: "Miss" }
]);

self.nameSuffix = ko.observable();

在您看来 -

<select id="d_name-suffix" style="width:auto; height:auto" data-bind="options: $root.nameSuffixes, value: nameSuffix, optionsText: 'options1'" />

答案 1 :(得分:0)

所以实际上我找到了解决这个问题的方法。我没有将Mr,Mrs等作为对象,而是使用以下数组创建了字符串:

self.nameSuffixes = ko.observableArray([ "","Mr.","Mrs","Miss"]);
self.nameSuffix = ko.observable();