如何禁用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
相关产品推荐
相关产品推荐

