Javascript 如何设置selectedValue允许不区分大小写

Javascript 如何设置selectedValue允许不区分大小写,javascript,jquery,knockout.js,Javascript,Jquery,Knockout.js,我希望能够设置敲除可观察值的值,即选择的值不区分大小写。因此,在我下面的示例中,传递justin将selectedValue设置为justin 不工作: 工作: HTML <select id="people" data-bind="options: peopleList, value: selectedPerson, optionsCaption: 'Choose...'"> </select> 您可以自己渲染选项,而不使用options绑定。这将允许您将值转换为小写

我希望能够设置敲除
可观察值
的值,即
选择的
不区分大小写
。因此,在我下面的示例中,传递
justin
selectedValue
设置为
justin

不工作: 工作: HTML

<select id="people" data-bind="options: peopleList, value: selectedPerson, optionsCaption: 'Choose...'">
</select>

您可以自己渲染选项,而不使用
options
绑定。这将允许您将值转换为小写:

<select id="people" data-bind="value: selectedPerson, optionsCaption: 'Choose...'">
    <option value=''>Choose...</option>
    <!-- ko foreach: peopleList -->
        <option data-bind='value: $data.toLowerCase(), text: $data'></option>
    <!-- /ko -->
</select>

选择。。。

这里正在工作

使用
选项值
选项文本
绑定以“原样”呈现条目,同时保持值不区分大小写

function MyViewModel(defaultPerson) {
    var self = this;
    var Person = function(name) {
        this.name = name;
        this.ciName = name.toLowerCase();
    };
    self.selectedPerson = ko.observable(defaultPerson);
    self.ciSelectedPerson = ko.computed(function() {
        return self.selectedPerson().toLowerCase();
    });
    self.peopleList = ko.observableArray(
        ["Justin", "Sam", "Chris", "John"].map(
            function(s) { return new Person(s) }));
}
标记:

<select id="people" data-bind="options: peopleList, optionsValue: 'ciName', optionsText: 'name', value: ciSelectedPerson, optionsCaption: 'Choose...'">
</select>


这肯定会奏效,我希望有一个更内置的解决方案。我几乎说优雅,但我不认为我会找到它。一个非常好的答案+1,我从映射插件返回结果,但肯定可以添加此功能。
<select id="people" data-bind="options: peopleList, optionsValue: 'ciName', optionsText: 'name', value: ciSelectedPerson, optionsCaption: 'Choose...'">
</select>