本篇介绍:如何在mvc中使用html标签保留多位小数

你需要知道:

@html标签的使用: https://blog.csdn.net/pasic/article/details/7093802

js正则参考:https://blog.csdn.net/xinghuo0007/article/details/72675105

前端:Layui

①创建页面  Shared创建文件夹EditorTemplates(必须的,自定义都需要放到此目录下) ,然后添加Razor视图,命名为Number

 具体代码如下:

@using System.ComponentModel.DataAnnotations;
@using System.Reflection;
@{
//Html.DisplayNameForModel(): [Display(Name = "xx")]
//ViewData.TemplateInfo.HtmlFieldPrefix: @Html.EditorFor(model => model.DJ, new { Fixed = 2 }) //保留的小数 传递的参数
int Fixed = ViewData["Fixed"] == null ? : (int)ViewData["Fixed"];
//是否非空
bool readOnly = false;
readOnly = ViewData["readOnly"] == null ? false : (bool)ViewData["readOnly"];
string dataRequired = "";
string keyUp = "";
try
{
var Field = ViewData.ModelMetadata.ContainerType.GetProperty(ViewData.TemplateInfo.HtmlFieldPrefix);
RequiredAttribute required = (RequiredAttribute)Field.GetCustomAttribute(typeof(RequiredAttribute), false);
if (required != null)
{
dataRequired = "data-val=true data-val-required=" + Html.DisplayNameForModel() + "为必填字段 data-val-number=" + Html.DisplayNameForModel() + "必须是数字";
}
if (Fixed == ) //整数
{
keyUp = @"this.value=this.value.replace(/\D/gi,'')";
}
else if (Fixed == -) //不计算小数位
{
keyUp = @"this.value=this.value.replace(/[^\d.]/g,'').replace(/^\./g,'').replace(/\.{2,}/g,'.').replace('.','$#$').replace(/\./g,'').replace('$#$','.')";
}
else
{
keyUp = @"this.value=this.value.replace(/[^\d.]/g,'').replace(/^\./g,'').replace(/\.{2,}/g,'.').replace('.','$#$').replace(/\./g,'').replace('$#$','.').replace(/^(\-)*(\d+)\.(\d{" + Fixed + "}).*$/,'$1$2.$3')";
}
}
catch { }
}
<input class="layui-input input-validation-error" type="text" @dataRequired @(readOnly ? "disabled" : "")
id="@ViewData.TemplateInfo.HtmlFieldPrefix" name="@ViewData.TemplateInfo.HtmlFieldPrefix"
aria-describedby="@ViewData.TemplateInfo.HtmlFieldPrefix-error"
aria-invalid="true" onkeyup=@keyUp>

②在ViewModel上面标注: UIHint("Number")

③页面使用:

注:如果我们不想使用@html标签,我们也能使用js的

添加js方法:

 layInputNumber: function (idForm) {
var advDiv = $(idForm);
var allInput = $("[data-options]", advDiv);
for (var i = 0; i < allInput.length; i++) {
let item = $(allInput[i]);
if (item[0] != "") {
let op = item.data('options');
if (op.type == "Fixed") {
let Fixed = 2;//默认两位
if (op.Fixed) {
Fixed = op.Fixed;
}
let obj = item[0];
if (Fixed == 0) //整数
{
item[0].onkeyup = function (e) {
obj.value = obj.value.replace(/\D/gi, '');
};
}
else if (Fixed == -1) //不计算小数位
{
item[0].onkeyup = function (e) {
obj.value = obj.value.replace(/[^\d.]/g, ""); //清除"数字"和"."以外的字符
obj.value = obj.value.replace(/^\./g, ""); //验证第一个字符是数字
obj.value = obj.value.replace(/\.{2,}/g, "."); //只保留第一个, 清除多余的
obj.value = obj.value.replace(".", "$#$").replace(/\./g, "").replace("$#$", ".");
};
}
else {
item[0].onkeyup = function (e) {
obj.value = obj.value.replace(/[^\d.]/g, ""); //清除"数字"和"."以外的字符
obj.value = obj.value.replace(/^\./g, ""); //验证第一个字符是数字
obj.value = obj.value.replace(/\.{2,}/g, "."); //只保留第一个, 清除多余的
obj.value = obj.value.replace(".", "$#$").replace(/\./g, "").replace("$#$", ".");
//参数不能使用字面量来添加,需要使用 new RegExp
var re = new RegExp("^(\\-)*(\\d+)\\.(\\d{" + Fixed + "}).*$");
obj.value = obj.value.replace(re, "$1$2.$3")
//obj.value = obj.value.replace(/^(\-)*(\d+)\.(\d{n}).*$/, "$1$2.$3"); //能输入两个小数
}
}
}
}
}
 <div class="layui-input-block">
  @*利用data-options传递自定义参数,这个是跟js对应的*@
  <input name="HL" id="HL" class="layui-input" lay-verify="required|number" data-options='{"type":"Fixed","Fixed":3}' />
</div>

使用:

.net core mvc中input保留多位小数的更多相关文章

  1. JS中格式化数据保留两位小数

    问题:在JS中格式化数据保留两位小数的函数的多种方法 最好方法: 保留两位好像是这样吧     var   a   =   9.39393;     alert(a.toFixed(2)); 说明: ...

  2. Java中四舍五入保留两位小数

    Java中四舍五入保留两位小数 方法一 四舍五入 double f = 3.15; long res = Math.round(f); #结果 res = 3 保留两位小数 double f = 3. ...

  3. 梁勇(Danniel Liang) java教材例题:java程序购买额按税率求营业税 java中数值保留2位小数的方法

    package com.swift; import java.util.Scanner; public class PurchaseTaxDecimalsTwo { public static voi ...

  4. oracle中数字保留几位小数的问题

    需求:#将数字填充到对应金额单中 select substr(b.payMoney,length(b.payMoney),1) 分, substr(b.payMoney,length(b.payMon ...

  5. JS小数位保留两位小数--toFixed()

    parseInt,parseFloat,parseDouble在JS中是将值转换成相应的类型: 你必须要这样,才能实现: <script>         alert(parseFloat ...

  6. javascript实现保留两位小数的多种方法

    第一种方法:javascript实现保留两位小数一位自动补零代码实例:第一种方法介绍一下如何实现对数字保留两位小数效果,如果数字的原本小数位数不到两位,那么缺少的就自动补零,这个也是为了统一的效果,先 ...

  7. 006.Adding a controller to a ASP.NET Core MVC app with Visual Studio -- 【在asp.net core mvc 中添加一个控制器】

    Adding a controller to a ASP.NET Core MVC app with Visual Studio 在asp.net core mvc 中添加一个控制器 2017-2-2 ...

  8. js限制输入数字能输入小数点,js定义数组,js往数组中添加数据,js将字符型转为数字型,除法结果保留两位小数——js小测:计算比赛得分

    一个朋友跟我说要去给某个比赛算分: 规则:去掉最低分最高分求平均分: 最近在学习大数据可视化——图谱,用到js一些东西,所以今天就用js练练 用到知识点: js限制输入数字能输入小数点,js定义数组, ...

  9. ASP.NET Core MVC 中的 [Controller] 和 [NonController]

    前言 我们知道,在 MVC 应用程序中,有一部分约定的内容.其中关于 Controller 的约定是这样的. 每个 Controller 类的名字以 Controller 结尾,并且放置在 Contr ...

随机推荐

  1. C# 简单日志帮助类LogHelper

    调用: LogHelper.Debug(""); LogHelper.Info(""); LogHelper.Error(""); 项目添加 ...

  2. 结合 Vue.observable 写一个简易 Vuex

    作为 Vue 全家桶的一员,Vuex 的重要性不言而喻,不管是用来管理状态,还是封装 Controler 都很好用 不过在一些体量较小的项目中,为了几个简单的状态或者处理函数而引入 Vuex,就像是高 ...

  3. 浅谈华为验厂对MES系统的要求

    众所周知,华为对供应商在管理.防错.品控.追溯等方面的要求都非常严格.在华为验厂时,对供应商的信息系统,尤其是MES系统的评估也是有非常具体的要求.那么我们今天就来谈谈华为验厂时,对MES系统有哪些具 ...

  4. 华为企业级AS111-S,比较垃圾的地方

    今天换了一个华为企业级AS111-S 路由器,比较垃圾的地方: 1. 网页管理界面是https,却用一个无效的证书,chrome直接不能访问,IE可以访问,但第一次登陆改密码的时候就出错了. 然后怎么 ...

  5. html5表单上传控件Files筛选指定格式的文件:accept属性过滤excel文件

    摘自:http://blog.csdn.net/jyy_12/article/details/9851349 (IE9及以下不支持下面这些功能,其它浏览器最新版本均已支持.) 1.允许上传文件数量 允 ...

  6. SpringBoot quartz定时器

    <!-- 案例1 --> <!-- 定时器 --> <bean name="CodeTest" class="com.aaa.bbb.con ...

  7. TCP链接异常断开后,对端仍然ESTABLISH

    双方建立TCP链接,其中一方拔掉网线,另一端依然是ESTABLISHED,那么要过多长时间才会发觉链接被断开了呢? [root@node1 ~]# sysctl -a |grep keepalive ...

  8. Java中基本数据类型、不能用浮点数表示金额

    转载请注明原文地址:https://www.cnblogs.com/ygj0930/p/10831763.html 一:8种基本数据类型 8种基本数据类型(4整,2浮,1符,1布): 整型:byte( ...

  9. Linux操作系统安全-局域网私有CA(Certificate Authority)证书服务器实战篇

    Linux操作系统安全-局域网私有CA(Certificate Authority)证书服务器实战篇 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.试验架构说明 node101 ...

  10. Nginx 核心配置-单节点实现多域名访问

    Nginx 核心配置-单节点实现多域名访问 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.试验环境说明 1>.虚拟机环境说明 [root@node101.yinzheng ...