Angularjs 确定表单输入是否具有焦点

Angularjs 确定表单输入是否具有焦点,angularjs,validation,focus,onchange,Angularjs,Validation,Focus,Onchange,我在AngularJS中进行验证,如果有3种类型的错误,就会显示一个div 对于required,我只想在页面以空值提交时显示错误消息 <div class="error" data-ng-show="submitted && mainForm.email.$error.required" /> 对于正则表达式验证,我希望它标记实时默认行为 <div class="error" data-ng-show="mainForm.email.$error.pat

我在AngularJS中进行验证,如果有3种类型的错误,就会显示一个div

对于required,我只想在页面以空值提交时显示错误消息

<div class="error" data-ng-show="submitted && mainForm.email.$error.required" />

对于正则表达式验证,我希望它标记实时默认行为

<div class="error" data-ng-show="mainForm.email.$error.pattern" />

我面临的问题是minlength。我不想在他们打字时显示它。这很烦人,因为他们还没有完成打字。我也不想在提交时显示它,我认为那太晚了。当它们不再是元素的焦点时,我想展示它

如果//mainForm.email.$focus存在,我可以简单地这样做

<div class="error" data-ng-show="mainForm.email.$error.minlength && 
!mainForm.email.$focus"/>

有人知道做这种检查的方法吗?或者有没有其他方法


谢谢

您需要了解ModelOptions,debounce和updateOn可以延迟模型更改触发事件或在DOM事件上触发更改

检查页面上的示例

<div ng-controller="ExampleController">
  <form name="userForm">
    Name:
    <input type="text" name="userName"
           ng-model="user.name"
           ng-model-options="{ updateOn: 'blur' }"
           ng-keyup="cancel($event)" /><br />

    Other data:
    <input type="text" ng-model="user.data" /><br />
  </form>
  <pre>user.name = <span ng-bind="user.name"></span></pre>
</div>

姓名:

其他数据:
user.name=
是的,确实如此
为此,您可以使用ngFocus和ngBlur

这是密码

 <input type="text"
        name="searchText"
        ng-model="searchText"
        ng-blur="searchIsInActive()"
        ng-click="searchIsActive()"                  
        placeholder="Search">

这里出错

ngFocus和ngBlur采用表达式,ngShow在真实评估后显示另一个简单选项是:


很高兴知道这一点。唯一的问题是我仍然需要对Regex验证进行实时验证。我正在考虑使用ng blur并设置一个范围变量。我只是不想在每个领域都这样做:(
 <input type="text"
        name="searchText"
        ng-model="searchText"
        ng-blur="searchIsInActive()"
        ng-click="searchIsActive()"                  
        placeholder="Search">