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