Jquery验证在数字字段上存在严重错误,其中第一个字符是小数

leo*_*ora 3 jquery numeric jquery-validate asp.net-mvc-3

我正在使用asp.net-mvc3助手和jquery验证插件(当你使用模板(创建,编辑等)时,开箱即用的东西,我有一个名为MiniPrice的字段是数据类型 小数?

所以它在客户端验证我在文本框中输入了一个数字.

如果我输入1.25就行了.如果我输入0.75它工作正常,但如果我输入.75它会给出此验证错误:

在此输入图像描述

为什么jquery不引人注意的验证认为.75不是有效数字?

我发现这个错误是多年前在jquery核心站点上提交的,它被关闭了,因为它不是一个jquery核心问题,而是一个插件问题.

vcs*_*nes 5

这似乎是验证器的行为方式.我打开jQuery的一个问题,看看他们是否可以(或想要)解决它.

同时,您可以创建自己的验证器方法,使其行为与您期望的一样:

$.validator.addMethod('myValidateNumber', function (value) { 
    return /^(\d\.|\.)?\d+$/.test(value); 
}, 'Please enter a valid number');
Run Code Online (Sandbox Code Playgroud)

这个正则表达式看起来像你想要的那样 - 也许有更好的方法来编写它.我不是正则表达的主人,但这应该足够了.

然后,只需用myValidateNumberclass任何您要验证的.您可以在此处阅读有关扩展jQuery验证的更多信息.

编辑:要将其连接到MVC3 - 请查看此StackOverflow帖子:对自定义属性执行客户端验证.

基本上我们正在做的是为此创建自己的验证,并且您可以将自己的属性应用于模型.

编辑2:如果您使用validator.addMethod('number'...,它似乎将更改数字验证的默认行为.这意味着您根本不必更改MVC模型.基本上,将此添加到您的页面加载:

$.validator.addMethod('number', function (value) { 
    return /^(\d\.|\.)?\d+$/.test(value); 
}, 'Please enter a valid number');
Run Code Online (Sandbox Code Playgroud)

应该解决问题.