我有kendo数字文本框。如果我输入的数字如123456,则小部件会自动使用逗号和美元符号格式化数字。但是,如果我使用逗号复制和粘贴数字,例如123,456
,则窗口小部件不接受它作为输入。
我如何解决这个问题或覆盖defualt行为
答案 0 :(得分:1)
用千位分隔的逗号分隔国家和剑道网格的位置货币
columns.Bound(e => e.Amount).ClientTemplate(“#= Amount!== null?kendo.toString(Amount,'c','en-US'):``#”)。Width (“ 5%”)。Title(“ Amount”); 例如:
kendo.toString(1234.23,'c','de-DE')–> 1.234,23€
kendo.toString(1234.23,'c','sv-SE')–> 1.234,23 kr
kendo.toString(1234.23,'c','en-US')–> $ 1,234.23
仅逗号分隔,用两个小数点分隔: column.Bound(e => e.Amount).ClientTemplate(“#= kendo.format('{0:N2}',kendo.toString(Amount))#”)。Width(“ 5%”)。Title( “量”); 例如-1234.44-> 1,234.44 1234-> 1,234.00
答案 1 :(得分:0)
我认为这是剑道中的一个错误...
在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);
这样它可以根据消毒后的价值进行验证,然后它们似乎都按照您的预期运作....否则我无法真正理解为什么首先要对它进行消毒。
我意识到更改kendo源代码并不是真正有效的解决方案,但我确实认为这是一个错误,您可能需要解决它直到修复它。
如果您拥有剑道许可证,我会联系他们的支持人员以验证它是否是错误。如果您没有许可证,请告诉我,我会在有时间的情况下提交申请。