在Kendo数字文本框中使用逗号复制粘贴数字

时间:2017-04-12 15:56:52

标签: kendo-ui kendo-asp.net-mvc kendonumerictextbox

我有kendo数字文本框。如果我输入的数字如123456,则小部件会自动使用逗号和美元符号格式化数字。但是,如果我使用逗号复制和粘贴数字,例如123,456,则窗口小部件不接受它作为输入。

JSfiddle demo

我如何解决这个问题或覆盖defualt行为

2 个答案:

答案 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源代码并不是真正有效的解决方案,但我确实认为这是一个错误,您可能需要解决它直到修复它。

如果您拥有剑道许可证,我会联系他们的支持人员以验证它是否是错误。如果您没有许可证,请告诉我,我会在有时间的情况下提交申请。