Angular:ng 模式验证被 min/maxlength 覆盖
Angular: ng-pattern validation being overriden by min/maxlength
不确定我是否遗漏了什么或者这是否是一个真正的错误。
我是 运行 angular 1.2.9(我们仍然支持 IE8)并且我正在构建一个由对象动态生成的表单。
<input ng-maxlength="{{data.MaxLength}}"
ng-minlength="{{data.MinLength}}"
ng-required="data.Required"
ng-pattern="/[a-zA-ZàáâäãåèéêëìíîïòóôöõøùúûüÿýñçčšžÀÁÂÄÃÅÈÉÊËÌÍÎÏÒÓÔÖÕØÙÚÛÜŸÝÑßÇŒÆČŠŽ∂ð \-']+/"
ng-switch-when="input"
type="{{data.Type}}"
ng-model="formData[data.Name]"
name="{{data.Name}}" />
<p ng-if="form[data.Name].$error.pattern">
{{data.PatternValidationMessage}}
</p>
<p ng-if="form[data.Name].$error.maxlength || form[data.Name].$error.minlength">
{{data.LengthValidationMessage}}
</p>
<p ng-if="form[data.Name].$error.required">
{{data.RequiredValidatorMessage}}
</p>
因此,如果模式不匹配、字段未填充以及输入不符合最小或最大条件,我希望显示一条消息。
问题:
如果我只键入 "@[]"
它会触发模式验证消息,但如果我键入 "@[][]abc"
它会清除所有错误消息,并添加一个 class of ng-valid-pattern
(而且明显无效)
它好像一次只匹配一个,或者当输入有 "abc"
.
时它认为模式有效
任何帮助将不胜感激!
你一语中的"it thinks that the pattern is valid when the input has abc."
您需要在模式的开头添加“^”,在模式的结尾添加“$”,因此:
"/^[a-zA-Z.......]$/"
to 使模式从输入字符串的开头到结尾匹配,否则任何包含该模式的输入字符串都将匹配。
不确定我是否遗漏了什么或者这是否是一个真正的错误。 我是 运行 angular 1.2.9(我们仍然支持 IE8)并且我正在构建一个由对象动态生成的表单。
<input ng-maxlength="{{data.MaxLength}}"
ng-minlength="{{data.MinLength}}"
ng-required="data.Required"
ng-pattern="/[a-zA-ZàáâäãåèéêëìíîïòóôöõøùúûüÿýñçčšžÀÁÂÄÃÅÈÉÊËÌÍÎÏÒÓÔÖÕØÙÚÛÜŸÝÑßÇŒÆČŠŽ∂ð \-']+/"
ng-switch-when="input"
type="{{data.Type}}"
ng-model="formData[data.Name]"
name="{{data.Name}}" />
<p ng-if="form[data.Name].$error.pattern">
{{data.PatternValidationMessage}}
</p>
<p ng-if="form[data.Name].$error.maxlength || form[data.Name].$error.minlength">
{{data.LengthValidationMessage}}
</p>
<p ng-if="form[data.Name].$error.required">
{{data.RequiredValidatorMessage}}
</p>
因此,如果模式不匹配、字段未填充以及输入不符合最小或最大条件,我希望显示一条消息。
问题:
如果我只键入 "@[]"
它会触发模式验证消息,但如果我键入 "@[][]abc"
它会清除所有错误消息,并添加一个 class of ng-valid-pattern
(而且明显无效)
它好像一次只匹配一个,或者当输入有 "abc"
.
任何帮助将不胜感激!
你一语中的"it thinks that the pattern is valid when the input has abc."
您需要在模式的开头添加“^”,在模式的结尾添加“$”,因此:
"/^[a-zA-Z.......]$/"
to 使模式从输入字符串的开头到结尾匹配,否则任何包含该模式的输入字符串都将匹配。