仅在提交时基于正则表达式的验证

Posted

技术标签:

【中文标题】仅在提交时基于正则表达式的验证【英文标题】:Validation based on a Regular expression only on submit 【发布时间】:2014-03-30 19:27:54 【问题描述】:

我使用正则表达式验证价格,但在我完成插入值之前出现错误消息。

例如,我在什么时候插入值“10.20”,以及当我到达“10”时。出现消息错误。

在我完成插入所有值之前,如何避免出现此消息?

型号:

[Required(ErrorMessage = "Preenchimento obrigatório.")]
[Display(Name = "Valor em €")]
[RegularExpression(@"^(?!0\d|$)\d*(\.\d1,2)?$", ErrorMessage = "Valor inválido.")]
public decimal Valor  get; set; 

html

<input data-val="true" data-val-number="The field Peso Líquido em kg must be a number." data-val-regex="Valor inválido." data-val-regex-pattern="^(?!0\d|$)\d*(\.\d1,3)?$" data-val-required="Preenchimento obrigatório." id="PesoLiquido" name="PesoLiquido" placeholder="Ex. 10.200" type="text" value="" class="input-validation-error">

验证由库 jquery.validate.unobtrusive.js 自动进行

谢谢

【问题讨论】:

看看this answer 【参考方案1】:

假设这是一个客户端(即网络浏览器)脚本,使用类似 onChange() 或 onBlur() 的东西,它应该很容易验证给定事件并检测布尔结果。但是,如果您使用 onChange() 验证将在您开始输入后立即运行,而如果您要使用 onBlur() 验证将仅在焦点从该输入字段移开后运行。如果你真的想使用 onChange() 那么你需要编写额外的检查来定期轮询内容(可能基于键检测),以便有时间输入完整的值。我不熟悉您使用的语法,因此如果您是在框架内编码而不是自己编写代码,那么我无法进一步评论。这是非常标准的东西,通常带有这样的错误,它非常简单并且[最终]很明显!祝你好运。

【讨论】:

您好,谢谢,但这里的问题是库 jquery.validate.unobtrusive.js 会自动控制它,所以我需要在提交之前避免这种自动验证 抱歉错过了你提到 jquery 的那一行。之前没用过,很抱歉。 @user3360243 没问题 ;)

以上是关于仅在提交时基于正则表达式的验证的主要内容,如果未能解决你的问题,请参考以下文章

(基于织梦)表单提交验证

正则表达式仅在 Safari 上失败

正则表达式以验证配置

JS之正则表达式

easy 正则表达式验证 封装

正则表达式