仅在提交时基于正则表达式的验证
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 没问题 ;)以上是关于仅在提交时基于正则表达式的验证的主要内容,如果未能解决你的问题,请参考以下文章