我正在使用验证插件,并试图找出解决下述问题的最佳方法
我有一个十进制字段[textbox],只允许用户输入验证为
的十进制数someDecimal: {
required: true,
number: true
}
第一次保存没有任何问题。当用户尝试编辑该字段时,文本框将有一个科学记数法来自数据库,如下所示
1.23456789123457E+15
所以验证被解雇了它不是一个有效的数字。但它是一个带有科学记数的数字。
我如何处理此问题并确保如果它是有效的符号则不会触发验证?
由于
答案 0 :(得分:1)
你没有jQuery Validate的问题,因此我认为你不应该用jQuery Validate来解决这个问题。
您正在以某种方式验证用户输入的数据......在您的情况下,使用number
规则。据推测,这只是你想要的......一个通过number
规则的数字。
现在,当您从数据库中的值填充表单时,它将以科学计数形式返回为字符串。此问题不应与客户端验证有任何关系。
换句话说,如果字符串(或科学记数法)首先没有有效输入,那么你当然不希望jQuery Validate规则也允许这些类型的字符串。
如果您只允许用户在此表单中输入某种类型的号码,则必须编写服务器端代码,仅重新填充表单中的数字类型。 < / p>
因此,在服务器端代码中,从数据库中检索值并使用数据填充表单的代码,只需从数据库中获取值并将其转换为可接受的数字,即相同格式的数字用户最初输入的内容。
由于您从未提及过服务器端语言,因此我无法为您提供准确的代码。但是,例如,这可以通过PHP以多种方式完成。
我的解决方案有一些优点:用户可以看到预先填充的号码,其格式与预期输入的格式相同。查看客户端的所有内容并将其作为数字输入。服务器端/数据库上的所有内容都以科学记数法处理,并且对用户隐藏。
答案 1 :(得分:0)
在addMethod()
中使用自定义函数var stri = value.val();
if(typeof stri === 'number' && isFinite(stri) ) //returns true if number
return true;
else
return false;