我有剑道数字文本框。如果我输入像 123456 这样的数字,小部件会按预期自动使用逗号和美元符号格式化数字。但是,如果我用逗号复制并粘贴数字,例如123,456
,小部件不接受它作为输入。
我该如何解决这个问题或覆盖默认行为
我有剑道数字文本框。如果我输入像 123456 这样的数字,小部件会按预期自动使用逗号和美元符号格式化数字。但是,如果我用逗号复制并粘贴数字,例如123,456
,小部件不接受它作为输入。
我该如何解决这个问题或覆盖默认行为
用分隔的千值放置逗号,并为剑道网格放置国家/地区货币
columns.Bound(e => e.Amount).ClientTemplate("#= Amount !== null ? kendo.toString(Amount, 'c', 'en-US') : ''#").Width("5 %").Title("金额"); 例如:
kendo.toString(1234.23, 'c', 'de-DE') –> 1.234,23 €</p>
kendo.toString(1234.23, 'c', 'sv-SE') –> 1.234,23 kr
kendo.toString(1234.23, 'c', 'en-US') --> $1,234.23
只有逗号分隔,两个小数点:columns.Bound(e => e.Amount).ClientTemplate("#= kendo.format('{0:N2}', kendo.toString(Amount)) #").Width( "5%").Title("金额"); 例如 - 1234.44 -> 1,234.44 1234 -> 1,234.00
我认为这是剑道的一个错误......
在 NumericTextBox 的源代码中,有一个 _paste 处理程序,它看起来像是试图根据区域性的数字格式对输入进行清理,但随后它会针对未清理的值进行验证......似乎它应该使用已清理的值。
这是实现:
_paste: function (e) {
var that = this;
var element = e.target;
var value = element.value;
var numberFormat = that._format(that.options.format);
setTimeout(function () {
var result = that._parse(element.value);
var isValid = that._numericRegex(numberFormat).test(element.value);
if (result === NULL || that._adjust(result) !== result || !isValid) {
that._update(value);
}
});
},
因此,如果您粘贴“123,456”,它将 _parse() 到 123456(因为它知道“,”是千位分隔符)但是 isValid 检查仍在检查“123,456”,这是错误的,因此它会恢复到之前的值。
如果将 isValid 行更改为
var isValid = that._numericRegex(numberFormat).test(result);
这样它就可以根据经过清理的值进行验证,然后一切似乎都可以按您的预期工作....否则我真的不明白为什么首先要对其进行清理。
我意识到更改剑道源代码并不是一个真正有效的解决方案,但我确实相信这是一个错误,您可能必须解决它,直到它被修复。
如果您有剑道许可证,我会联系他们的支持以验证它是否是错误。如果您没有许可证,请告诉我,我会在有时间时提交请求,因为我有许可证。