我想让 NumberSpinner 和/或 NumberTextBox 能够做两件事:
如果在键入时出现舍入,或者在文本框失去焦点时最小化,我也会喜欢它。如果我尝试输入5.2
,它将会转到5.0
。如果我输入6.345
,它将会转到6.5
。
我在places
和/或pattern
对象上使用round
,constraints
和editOptions
属性尝试了一系列混合值。什么都行不通。
备注:
smallDelta
设置为0.5
,并且在使用微调器箭头时会增加属性。places
属性将覆盖您设置的任何pattern
属性。dojo/number
的源文档,我应该可以使用基于these guidelines的模式进行舍入。我尝试了各种版本的#.50##
但没有成功。它似乎将50
添加到输入值而没有舍入。也许我没有得到它?editOptions
pattern
值为#.#####
但是当文本框失去焦点时,它会舍入到三位小数。那么其他东西是否会覆盖这种模式?round()
的{{1}}方法似乎没有传递dojo/number
中increment
的{{1}}参数} 方法。因此,将NumberTextBox.js
设置为上述两个配置对象之一的属性什么都不做?这是一个基本jsFiddle using NumberSpinner尝试一些舍入和小数精度。
我的一次尝试:
filter()
我确信我可以通过自定义mixin在round
或<input
id="test"
type="text"
data-dojo-type="dijit/form/NumberSpinner"
data-dojo-props="
value: 5,
smallDelta: 0.5,
constraints: { min: 5, max: 1000, places: 1, round: 5 },
editOptions: {
places: 1
}
">
NumberTextBox
上扩展方法,但优先通过{{1}上的配置选项来实现如果可能的话。
与很多Dojo一样,有些东西并不像他们看起来那么明显或容易,特别是对于Dijits。在一些Dijits上没有太多的信息,文档喜欢掩饰事物,并且一直是道场的一个巨大弱点。
任何人都可以帮我澄清这些。我觉得我很亲近,需要有人指出我最喜欢的东西。我只想将一个值舍入到最近的 .5 和/或显示一个舍入的小数位。
答案 0 :(得分:1)
我认为舍入在dojo中已弃用或至少不受支持,但他们确实需要更新他们的手册。见here。我前一段时间研究了这个问题,并且在使用约束或方面以及前后舍入时无法找到一个好的解决方案。最大的问题是,如果你设置&#34;地点&#34;为1,然后是单个数字输入,如&#34; 7&#34;将解析为NaN,因为它没有1位小数。我最后通过做一些预处理来扩展NumberSpinner(主要是#34;解析&#34;函数)。我知道这不是你想要做的,只是看着道场门票,我不认为在道场的整个前线上有很多动作。