6

我正在使用 Knockout.js 和 ASP.NET。我的HTML如下:

<div class="InputField">
    Fixed/Floating
    <div class="FieldContainer">
        <select data-bind="options: $root.FixedLoanOptions, selectedOptions: IsFixed, valueUpdate: 'change'" ></select>
    </div>
</div>

如果用户使用鼠标选择项目,则 JSON 将返回服务器并提供更新的信息。但是,如果用户使用“选项卡”在选择控件上进行选项卡,选择一个项目,然后关闭选项卡,那么即使所选项目显示在 UI 上,JSON 也会返回该控件的空白值。

如果用户仅使用键盘,则 Knockout 视图模型似乎不会更新,当用户使用鼠标时,似乎在浏览器中专门发生了一些更改事件。

我怎样才能解决这个问题?有没有办法可以注册选择框 onchange 事件以使用手动更新 Knockout 模型的功能?

我在 IE9 和 Firefox 中都试过了,我在这两个中都有同样的问题。

4

4 回答 4

2

您的其余代码是什么样的?AJAX 调用是如何进行的?

这个用键盘修改选择的例子在 IE 和 Firefox 上对我来说没问题:

http://jsfiddle.net/mikebridge/yYS7c/2/

于 2012-05-10T18:18:45.367 回答
0

当 knockoutjs 将模型更新为触发更多模糊时,您可以更改事件。

<div class="InputField">
    Fixed/Floating
    <div class="FieldContainer">
        <select data-bind="valueUpdate: 'blur', options: $root.FixedLoanOptions, selectedOptions: IsFixed" ></select>
    </div>
</div>
于 2012-05-09T10:18:26.653 回答
0

只要您在选择“选项”选择“选项时,就可以在Live示例中看到:

  • 鼠标点击
  • 按下回车键后通过键盘箭头按钮进行选择。
于 2012-05-10T20:39:14.533 回答
0

将 valueUpdate 绑定到 'keyup' 对我有用。不影响用鼠标所做的更改,所以到目前为止看起来不错。

所以这样的事情应该有效:

<div class="InputField">
    Fixed/Floating
    <div class="FieldContainer">
        <select data-bind="valueUpdate: 'keyup', options: $root.FixedLoanOptions, selectedOptions: IsFixed" ></select>
    </div>
</div>
于 2012-08-22T14:50:22.340 回答