MVC TextBoxFor的输入字段中只有4位数字

Posted

技术标签:

【中文标题】MVC TextBoxFor的输入字段中只有4位数字【英文标题】:Only 4 digit numbers in input field in MVC TextBoxFor 【发布时间】:2021-01-19 05:59:54 【问题描述】:

我有一个 MVC5 项目,我有一个输入字段,我只想输入一个 8 位数字。我尝试这样实现它:

@html.TextBoxFor(model => model.oldPin, new  maxlength = "8", @class = "form-control disablecopypaste", onkeydown = "return isNumber(event);" )
 function isNumber(evt) 
        evt = (evt) ? evt : window.event;
        var charCode = (evt.which) ? evt.which : evt.keyCode;

        if (charCode === 16) 
            return false;
        
        if (charCode > 31 && (charCode < 48 || charCode > 57)) 
            return false;
        
        return true;
    

我的问题是,虽然这可以防止数字,但它允许空格和特殊字符。我该如何防止这种情况?它适用于 keypress 事件,但它已贬值,我担心浏览器兼容性。有没有办法用keydown事件做到这一点?我看到的所有答案都与keypress事件有关。

【问题讨论】:

【参考方案1】:

       function allowNumberOnly (e) 
            var ascii = (e.which) ? e.which : e.keyCode
            if (ascii> 31 && (ascii< 48 || ascii> 57)) 
                return false;
            
            else 
                var vall = $('#oldPin').val()
                if (vall.length > 3) 
                    return false;
                
                else 
                    return true;
                
            
        



       
        
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input class="form-control " id="oldPin" name="oldPin" onkeypress="return allowNumberOnly(event)" type="text" value="">

【讨论】:

感谢您的快速回复。这使用了已折旧的 onkeypress。我正在寻找一种不使用 onkeypress 的不同方式

以上是关于MVC TextBoxFor的输入字段中只有4位数字的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 MVC3 ASP.NET 4.5 和 EF6 基于实体属性注释对 TextBoxFor 进行舍入

MVC 和 Razor 中 Html.TextboxFor 和 Html.EditorFor 的区别

c# razor mvc textboxfor in foreach 循环

使用 jQuery datepicker 从 ASP MVC @Html.TextBoxFor 控件中删除时间

ASP.NET MVC3:使用 JQuery DatePicker 和 editorFor/TextBoxFor 以正确的格式显示日期

Html5 data-* with asp.net mvc TextboxFor html属性