Я пытаюсь создать редактируемый блок со списком. Это HTML, который я написал:
<select data-bind='options: possibleOptions, value: selectedOption' onchange='this.nextElementSibling.value = this.value'></select>
<input type='text' name='format' data-bind='value: selectedOption, valueUpdate:[\"afterkeydown\", \"click\", \"input\", \"change\"]' />
с помощью http://jsfiddle.net/nwH8A/.
Итак, что происходит, так это то, что selectedOption корректно обновляется при вводе текста вручную. Но когда я выбираю опцию из выпадающего списка (possibleOptions), значение selectedOption не обновляется, если я не нажму на текстовое поле. В основном то, что я пытаюсь сделать, это позволить пользователю вводить текст вручную, а также выбирать из выпадающего списка и соответственно обновлять значение selectedOption.
Есть ли какое-либо событие, которое мне нужно добавить в список событий valueUpdate, или есть какой-то другой способ для достижения результата?
Я работаю в файле машинописных файлов.
Благодарю.
Я не уверен, понимаю ли я ваш вопрос... Попробуйте следующее:
function ViewModel() {
var self = this;
self.possibleOptions = ko.observableArray([ { text: '1', value: '1' }, { text: '2', value: '2' } ]);
self.selectedOption = ko.observable();
self.selectedOption.subscribe(function (newValue) {
self.possibleOptions.push({ text: newValue, value: newValue });
});
};
ko.applyBindings(new ViewModel());
HTML
<select data-bind="options: possibleOptions, optionsText: 'text', optionsValue: 'value', value: selectedOption">
</select>
<input type="text" name="format" data-bind="value: selectedOption" />
Чтобы увидеть это, выполните следующие действия: https://jsfiddle.net/q6ov7r59/3/
event
вместоonchange
триггераonchange
. Определенно не связывайтесь сthis.value
.