Javascript 使用敲除从选择中预填充文本输入

Javascript 使用敲除从选择中预填充文本输入,javascript,knockout.js,Javascript,Knockout.js,我正在使用Knockout并用值预填充一个select列表。我希望将这些值复制到文本框中,但用户可以覆盖文本框中的任何内容。当前,当文本框失去焦点时,其值将恢复为dropdownlist的当前选定值 视图模型: function ViewModel() { var self = this; self.services = ['/api/trainers', '/api/trainingcategories'] self.selectedApi = ko.observable('/api/tra

我正在使用Knockout并用值预填充一个select列表。我希望将这些值复制到文本框中,但用户可以覆盖文本框中的任何内容。当前,当文本框失去焦点时,其值将恢复为dropdownlist的当前选定值

视图模型:

function ViewModel() {
var self = this;

self.services = ['/api/trainers', '/api/trainingcategories']
self.selectedApi = ko.observable('/api/trainers');
}
HTML:


美国石油学会
调用API

我认为只要selectedApi值被设置为不在选项列表中的值,但这不是我看到的行为,设置valueAllowUnset就会产生清空select元素的效果。

valueAllowUnset选项是在3.1.0版的Knockout中添加的。您必须使用该版本或更高版本才能使选项生效。

当文本框失去焦点时,您希望出现什么行为?选择列表应变为空白(这是文档所说的valueAllowUnset为true时应出现的情况),selectedApi的viewModel值应该具有文本框中指定的值。这正是您的代码所做的。在文本框中键入内容,然后按tab按钮进行模糊。有趣。显然,它在我的页面上不起作用,但我在你的小提琴上看到了预期的行为;让我试着找出问题所在。问题是我的淘汰版本已经过时-更新到最新版本,问题已经解决。谢谢你的帮助!请随意添加答案,我会标记它。
<div class="form-group">
<label>API</label>
<select data-bind="options: services,
        optionsCaption: 'Choose an API...',
        value: selectedApi,
        valueAllowUnset: true"></select>
</div>
<div class="form-group">
    <input class="form-control" type="text" data-bind="value: selectedApi" />
    <button type="submit" class="btn btn-default">Call API</button>
</div>