MVC中的kendo numericTexbox和使用逗号作为小数分隔符的文化

时间:2014-01-12 00:26:13

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

我正在尝试使用kendo NumericTextBox文化“es-AR”,它使用逗号作为小数分隔符。问题是,当我发送动作NumericTextBox的值时,发送的值是“XY”但预期“X,Y”。 (逗号)

NumericTextBox有没有办法以逗号作为小数分隔符返回一个数字?

以下是我正在尝试制作的一个例子。

http://jsfiddle.net/bustoscarlos/qS3pC/16/

$(document).ready(function() {
   kendo.culture("es-AR");
});

var numeric = $("#price").kendoNumericTextBox({
 value:25.36
}).data("kendoNumericTextBox");

<!-- Expect value with comma , not with point -->
$('#valueOfprice').val(numeric.value());

编辑: 此numericTextbox位于网格的PopUp编辑器中。  当我向服务器提交更改时,需要使用逗号发送值,  因为服务器需要一个逗号。

网格定义的一部分

.Editable(e => e.Mode(GridEditMode.PopUp).TemplateName("TrasladoPopupEditViewNew")).Events(ev => ev.Save("gridSave"))
     .DataSource(dataSource => dataSource
            .Ajax()
            .ServerOperation(true)
            .Events(events => events.Error("error"))
            .Model(model =>
            {
                model.Id(e => e.Id);
            })
            .Create(create => create.Action("Create", "Controller"))
            .Read(read => read.Action("Read", "Controller"))
            .Update(update => update.Action("Update", "Controller"))
            .Destroy(destroy => destroy.Action("Delete", "Controller"))


      ))

1 个答案:

答案 0 :(得分:0)

Kendo数字文本框的值为&#39; number&#39;。 DOM元素有一个字符串作为内容,因此当您为元素指定编号时,会分配numeric.value().toString()。默认情况下,这会使用.作为十进制标记,而且我不相信有一种方法可以在JavaScript中更改它。

但是,您可以使用以下逗号替换该字符串中的.

var value = numeric.value();
var valueAsString = value.toString();
var valueStringWithComma = valueAsString.replace('.', ',');

(有关插图,请参阅demo

如果您愿意,可以在窗口小部件的原型中添加方法,例如:

kendo.ui.NumericTextBox.fn.getValueAsString = function () {
    var value = this.value();
    if (value) {
        return value.toString().replace('.', ',');
    } else {
        return "";
    }
}

或者您可以使用剑道formatter

kendo.ui.NumericTextBox.fn.getValueAsLocalString = function () {
    return kendo.toString(this.value(), "n2");
}