本篇介绍:如何在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. .Net Core 学习路线图

    今天看  草根专栏 这位大牛的微信公众号,上面分享了一张来自github的.net core学习路线图,贴在这里,好让自己学习有个方向,这么一大页竟然只是初级到高级的,我的个乖乖,太恐怖了. 感谢大牛 ...

  2. python--线程和进程的初识

    一.进程与线程之间的关系 1.线程是属于进程的,线程运行在进程空间内,同一进程所产生的线程共享同一内存空间,当进程退出时该进程所产生的线程都会被强制退出并清除. 2.线程可与属于同一进程的其它线程共享 ...

  3. javascript获取url中的参数值

    javascript的实现代码如下: function QueryString(fieldName) { var urlString = document.location.search; if(ur ...

  4. vue-router 在新窗口打开页面的功能

    项目中,需要点击链接后再新窗口打开页面,大家知道vue是单页面应用开发框架,那么也不是不可以实现这个功能 很简单,详情看下面 1.<router-link>标签实现新窗口打开 <ro ...

  5. gdb gdbtui

    1. gdbtui 打开tui模式 gdbtui a.out gdb -tui a.out 调试一个正在运行的进程 gdb -p pid 在linux自带的终端里是正常显示的,但是在securecrt ...

  6. How to prove that SAP CRM WebUI is a stateful application

    I create an enhancement in this function module to print out current session id: As long as I do not ...

  7. linux部署django项目流程(全)

    1.python3和python2共存配置 流程在下面网址中 https://www.cnblogs.com/vinic-xxm/p/11358894.html 2.安装依赖包 yum install ...

  8. MySQL服务的构成(二)

    一.什么是实例 这里的实例不是类产生的实例对象,而是Linux系统下的一种机制 1.MySQL的后台进程+线程+预分配的内存结构. 2.MySQL在启动的过程中会启动后台守护进程,并生成工作线程,预分 ...

  9. 【转载】QQ炫舞手游自制谱子教程(星动模式)

    第一步:计算ET和BPM: 抄送原作者部落链接:https://buluo.qq.com/p/detail.html?bid=368006&pid=981862-1529828677& ...

  10. Python 实现基于信息熵的 ID3 算法决策树模型

    版本说明 Python version: 3.6.6 |Anaconda, Inc.| (default, Jun 28 2018, 11:21:07) [MSC v.1900 32 bit (Int ...