Bru*_*uno 5 regex validation angularjs angularjs-directive
我有这个代码:
<form name="test">
<input type="text" ng-model="code" name="code" ng-pattern="/^code_[0-9]+$/"/>
<div ng-show="test.code.$dirty && test.code.$invalid">
Error:
<span ng-show="test.code.$error.pattern">Pattern fail.</span>
</div>
</form>
Run Code Online (Sandbox Code Playgroud)
我对此代码有2个问题:
"code_232","code_232""code_232"等字符串通过验证.我不是正则表达式的专家,所以这可能是一个与我写的正则表达式有关的问题:/^code_[0-9]+$/
如果我开始编写"code_23892"(正确的字符串),我仍然在写(test.code.$error.pattern = true
)时收到错误消息.是否有内置的方法来避免这种情况?所以我的行为是:
如果我写"cod",输入仍然是焦点:没有错误
如果我写"cod"并且输入失去焦点:错误.
如果我写"a","ca","coa"等:错误,导致模式已被违反.
这是否已经可行,或者我已经编写了一个客户验证指令来实现这一目标?
提前致谢.
空白不会触发验证失败的原因是因为ng-model会自动修剪该值.如果您不想这样,可以添加ng-trim="false"
到您的<input />
.请注意,ng-trim是一个非常新的属性,因此您可能必须更新Angular版本.
关于你的第二个问题; 我不认为您可以避免在键入时运行验证,但您可以将代码更改为仅在输入失去焦点时显示错误.我不认为存在类似ng-blur
和ng-focus
存在的东西,但实现它们应该非常简单.