jquery验证数字不起作用
Posted
技术标签:
【中文标题】jquery验证数字不起作用【英文标题】:jquery validate digits not working 【发布时间】:2014-03-13 23:47:49 【问题描述】:我一直在寻找这个问题的答案;我试图让 jquery 验证的数字设置工作没有任何成功。以下是我的设置:
min: 0,
max: 99,
digits: true,
messages:
min: 'The minimum value is 0',
max: 'The maximum value is 99',
digits: 'The value must be a number'
我正在动态分配我的规则(我意识到我上面的代码没有列出我正在验证的字段的名称)并且我已经验证了所有其他规则(最小值和最大值)都在正确验证,但是当我在文本框中输入字母数字字符时,会触发“min”验证器而不是数字验证器。我使用的是文本输入类型而不是数字,所以这不应该是问题。提前感谢您的帮助。
更新:
如果您在“min”工作但“max”不工作时遇到问题,也仅适用于在那里搜索的任何人,您不需要确保分配给“max”的变量是 javascript 数字。您可以将字符串“0”分配给 min,它将执行转换,但将字符串“99”传递给 max 将导致 max 验证停止工作。这是我处理了很长时间的另一个问题,因为在这个解决方案中,我不知道设计时的最小值和最大值。我从 DOM 中以字符串形式出现的属性中提取它们。
【问题讨论】:
请在此处发布小提琴或您的验证码。 【参考方案1】:我不是专家,但如果你把digits: true,
放在最小值和最大值之上会怎样:
digits: true,
min: 0,
max: 99,
messages:
min: 'The minimum value is 0',
max: 'The maximum value is 99',
digits: 'The value must be a number'
【讨论】:
实际上你的建议奏效了;在我把数字放在第一位之后,验证开始工作。但是,现在,如果我输入一个负数,我会收到数字错误消息而不是最小错误消息。我确定那是因为“-”不是数字。感谢您的帮助。 很高兴我能帮上忙! -1 未按预期验证的原因是,数字检查必须首先将您的输入转换为字符串值并检查字符串中的每个字符以确保它们都是 0123456789,因此是digits
名称。如果您要验证 number
,例如 -1 或 1.45,那么您需要 number: true,
而不是 digits: true,
,因为数字需要更高级的正则表达式来确保规则,例如 only one decimal
和 only one negative symbol
允许。
如果您正在寻找 jQuery Validate 的一些优秀使用示例,那么我建议您查看这个主题的预览:Metronic Admin Template 并查看这个特定的 JS 文件:form-validation.js
感谢所有帮助和信息;我一定会查看您发布的链接。【参考方案2】:
在验证之前添加以下代码
jQuery.validator.setDefaults(
debug: true,
success: "valid"
);
你应该使用<input type="text" />
而不是<input type="number"/>
【讨论】:
我正在使用自定义成功事件处理程序,但我可以尝试将 debug 设置为 true;我也使用 type="text" 而不是 type="number"。以上是关于jquery验证数字不起作用的主要内容,如果未能解决你的问题,请参考以下文章