我正在使用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将返回到具有更新信息的服务器。但是,如果用户使用“tab”选项卡进入选择控件,选择一个项目,然后选项卡关闭,那么即使UI上显示所选项目,JSON也会返回该控件的空白值。
如果用户仅使用键盘,似乎Knockout视图模型不会更新,当用户使用鼠标时,似乎有一些特定于浏览器中发生的更改事件。
我该如何解决这个问题?有没有办法可以在onchange事件中注册选择框以使用手动更新Knockout模型的函数?
我在IE9和Firefox中都尝试过,我在两者中都有同样的问题。
答案 0 :(得分:2)
答案 1 :(得分:0)
当knockoutjs将模型更新为模糊时,您可以更改事件,触发更多。
<div class="InputField">
Fixed/Floating
<div class="FieldContainer">
<select data-bind="valueUpdate: 'blur', options: $root.FixedLoanOptions, selectedOptions: IsFixed" ></select>
</div>
</div>
答案 2 :(得分:0)
正如您在Live example Knockout更新模型中看到的那样,仅当选择了选项时:
答案 3 :(得分:0)
将valueUpdate绑定到'keyup'为我做了诀窍。不影响使用鼠标进行的更改,所以到目前为止看起来很好。
所以这样的事情应该有效:
<div class="InputField">
Fixed/Floating
<div class="FieldContainer">
<select data-bind="valueUpdate: 'keyup', options: $root.FixedLoanOptions, selectedOptions: IsFixed" ></select>
</div>
</div>