【问题标题】:valueUpdate event for change in select option用于更改选择选项的 valueUpdate 事件
【发布时间】:2015-10-05 23:09:51
【问题描述】:

我正在尝试创建一个可编辑的组合框。 这是我写的 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 事件列表中,或者是否有其他方法来完成结果?

我正在处理打字稿文件。

谢谢。

【问题讨论】:

  • 尝试使用event 数据绑定而不是onchange 触发器属性。绝对不要惹this.value
  • 把KO加到你的fiddle上会更容易玩。

标签: knockout.js data-binding typescript


【解决方案1】:

我不确定我是否理解您的问题...试试这个:

 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/

【讨论】:

  • 我想要的有点像这个link。如果发生以下两种情况中的任何一种,我想更改 selectedOption 的值:1)所选选项更改 2)输入了一些文本。在这个小提琴中, selectedOption 在输入文本时不会更新。我该怎么做?
猜你喜欢
  • 2012-09-26
  • 2023-03-19
  • 1970-01-01
  • 1970-01-01
  • 2021-08-28
  • 2016-04-11
  • 2021-09-25
  • 2012-08-20
  • 1970-01-01
相关资源
最近更新 更多