Knockoutjs中的数字输入和范围valueUpdate

时间:2013-07-24 17:38:39

标签: 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>

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

建议?

1 个答案:

答案 0 :(得分:7)

这是因为你设置了valueUpdate: 'afterkeydown'。这会导致绑定在每次按下某个键时尝试更新,并且由于您的最小值为512,因此尝试输入值2将会失败。

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

<input type="number" data-bind="value: ram, attr: {max: 8192, min: 512, step: 1}" />

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