如何在Razor页面中正确格式化更新Kendo NumericTextBox?
解决Kendo NumericTextBox更新后不即时显示的问题
直接通过jQuery操作DOM元素的val()和change()方法无法同步Kendo NumericTextBox的内部状态——因为控件本身维护了独立的数值管理和格式化逻辑,正确的做法是调用Kendo控件的官方API:
- 先获取NumericTextBox的实例,而非直接操作底层input元素
- 使用控件的
setValue()方法设置值,该方法会自动应用预设的格式化规则并即时更新显示
修正后的代码
// 获取Kendo NumericTextBox实例 var numericTextBox = $("#DataModel_FieldName").data("kendoNumericTextBox"); // 设置目标值,自动应用{0:C}货币格式化 numericTextBox.setValue(value); // 可选:如果需要触发控件绑定的change事件,添加此行 numericTextBox.trigger("change");
原理说明
Kendo的NumericTextBox对原生input做了封装,内部保存了原始数值和格式化后的显示值两个状态。直接修改input的val()只会更新DOM的文本内容,不会同步到控件的内部状态,因此需要通过官方提供的setValue()方法,让控件同时更新内部数值和前端显示的格式化文本,无需点击控件就能即时生效。
注意:传入setValue()的value必须是数值类型(如100、250.5),而非带货币符号的字符串,这样控件才能正确应用{0:C}格式。
内容的提问来源于stack exchange,提问作者dtthom09
相关产品推荐
相关产品推荐

