Handsontable使用numeral.js格式化数字等。
如果数据类型设置为数字且数据格式设置为0.00%,则handsontable(数字)以百分比格式很好地格式化。例如,如果值为0.5,则会自动将其格式化为50%。
但是当用户尝试编辑该值时,他们会看到0.5而不是50%。这是有道理的,除了Excel没有这样做,我的用户是Excel的重度用户(Excel显示实际的百分比数字)。有没有办法让它显示" 50"而不是0.5,编辑?我查看了numbers.js代码,发现这个函数formatPercentage将数字乘以100,用%符号等填充它。可以改变这个函数的工作方式,使其模仿MS Excel。但是,有没有办法在不改变数字的情况下做到这一点.js?
以上是上述示例(查看第三列 - 价格列) http://jsfiddle.net/suk9g9cm/
{
data: "price_usd",
type: 'numeric',
format: '0,0.00%',
language: 'en' //this is the default locale, set up for USD
},
答案 0 :(得分:1)
我自己遇到了类似的问题并且有一个未经测试的解决方案。让我告诉你到目前为止所知道的。 Handsontable有一个编辑器和一个渲染器。编辑器会模仿您的数据,因此如果您输入0.5,那么无论何时编辑该单元格,它都会显示该数据。离开单元格后,您会看到渲染器,在您格式化该值时,0.5将显示为50%。此值仅供显示,正如您所指出的,数字js乘以100并添加%
。
然而,您正在寻找的是一种基本上将数据数组保持为0.5的方法,但在编辑时将其更改为50,并且在渲染时,保留为50%。
这是一个解决方案:
在编辑上使用事件,查看单元格的值。如果它低于1,则乘以100(这将改变实际值,因此我们必须稍后调整)。在afterChange之后,如果该值大于1,除以100,否则离开(用户可能已经消隐并再次输入0.5,所以如果您没有进行此检查,则该值将下降到0.005)。
请注意,在Excel提供的另一种情况下,用户可能已经开始输入50,因此此方法实际上会修改此值并始终保留数据值为0.5的数据。如果这不是你想要的东西,那么事情就变得更难了,所以让我们说现在这是可以接受的。
虽然我还没有对它进行过测试,但这应该可以解决问题,并且可能会有我喜欢听到的边缘情况。
让我知道它是否有效,同时