You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何禁用Kendo NumericTextBox小数输入?已尝试多方法仍无效

解决Kendo NumericTextBox无法禁止小数输入的问题

你当前的控件配置虽设置了format="n0"、decimals="0"、restrictDecimals="true",但仍允许用户输入小数点及后续数值,这是因为这些属性更多是控制显示格式和输入后的修正逻辑,无法直接拦截实时输入行为。以下是两种彻底禁止小数输入的有效方案:

方案一:实时拦截键盘输入

通过绑定keydown事件,直接阻止小数点、逗号(部分地区用作小数分隔符)的输入动作:

<kendo-numerictextbox id="example1" name="example1" value="@Model.Example1" min="0" format="n0"  decimals="0" data-bind="value: Example1" class="form-control" disabled="@isDisabled" placeholder="0" auto-bind="true"></kendo-numerictextbox>

<script>
$(document).ready(function() {
    $("#example1").on("keydown", function(e) {
        // 拦截小数点、逗号输入
        if (e.key === "." || e.key === ",") {
            e.preventDefault();
        }
    });
});
</script>

方案二:通过parse事件强制修正输入值

利用Kendo的parse事件,将用户输入的任何值强制转为整数,即使输入了小数也会被截断:

<kendo-numerictextbox id="example1" name="example1" value="@Model.Example1" min="0" format="n0"  decimals="0" data-bind="value: Example1" class="form-control" disabled="@isDisabled" placeholder="0" auto-bind="true" parse="onParse"></kendo-numerictextbox>

<script>
function onParse(e) {
    // 将输入值转为非负整数,丢弃小数部分
    e.value = Math.max(Math.floor(parseFloat(e.value) || 0), 0);
}
</script>

方案三:双重保障(推荐)

同时使用上述两种方法,既拦截实时输入,又在值解析时强制修正,彻底避免小数输入:

<kendo-numerictextbox id="example1" name="example1" value="@Model.Example1" min="0" format="n0"  decimals="0" data-bind="value: Example1" class="form-control" disabled="@isDisabled" placeholder="0" auto-bind="true" parse="onParse"></kendo-numerictextbox>

<script>
$(document).ready(function() {
    $("#example1").on("keydown", function(e) {
        if (e.key === "." || e.key === ",") {
            e.preventDefault();
        }
    });
});

function onParse(e) {
    e.value = Math.max(Math.floor(parseFloat(e.value) || 0), 0);
}
</script>

内容的提问来源于stack exchange,提问作者Abhi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 19:29:54