Knockoutjs中的数字输入和范围valueUpdate

x20*_*mar 4 javascript html5 knockout.js

我一直在做一个项目,我需要一个数字输入和一个滑块看到小提琴这里http://jsfiddle.net/Dt7Ka/116/

<h2>Slider Demo</h2>

RAM: <input type="number" data-bind="value: ram,  valueUpdate: 'afterkeydown', attr: {max: 8192, min: 512, step: 1}" />
<div style="margin: 10px" data-bind="slider: ram, sliderOptions: {min: 512, max: 8192, range: 'min', step: 1}"></div>
Run Code Online (Sandbox Code Playgroud)

如果有人想手动输入一个数字(比如说2048),我发现淘汰赛就会出现过度杀伤并阻止我正确输入2048.

建议?

Kye*_*ica 7

这是因为你已经valueUpdate: 'afterkeydown'设定了.这会导致绑定在每次按下某个键时尝试更新,并且因为你有一个min 512,所以尝试输入值2将会失败.

您无法输入,2048因为它尝试在第一个键后更新.如果你只是采取我们的那部分绑定它将工作正常.

<input type="number" data-bind="value: ram, attr: {max: 8192, min: 512, step: 1}" />
Run Code Online (Sandbox Code Playgroud)

http://jsfiddle.net/Dt7Ka/118/

  • 如果你正在寻找中间的东西,你可以使用带有油门的可写计算观测值,但这是一种解决方法. (2认同)