【发布时间】:2013-10-19 09:03:32
【问题描述】:
我有一个由 Angular 控制的表单,我希望它能够意识到潜在的重复用户电子邮件。
我关心的代码在那里:http://plnkr.co/edit/XQeFHJTsgZONbsrxnvcI
它包含两个指令:
-
ngFocus:能够获得任何输入是否聚焦或模糊的信息。 它还关注hasVisited变量,以避免在用户至少一次未访问blur时验证输入。 -
emailUnique:与已经存在的邮件(硬编码)进行简单比较,以便能够验证email输入。
重点是:(不要忘记将“tab”触摸以执行blur函数以查看字段的验证错误)
- 如果我不输入任何内容并转到名称输入(以模糊电子邮件输入),它会显示:该字段是必需的。很好。
- 如果我输入了一个无效的电子邮件,例如字符串“ferfergre”,它会显示:此电子邮件无效。。很好。
- 如果我输入了与现有硬编码电子邮件不同的有效电子邮件:(michael@gmail.com),则不会显示错误。很好。
- 如果我输入现有邮件:michael@gmail.com,它会显示:此电子邮件已存在。。这很好,因为它会发出警告。
- 但是,如果在 DOM 周期中至少有一次电子邮件被判断为“此电子邮件已存在”,那么即使我将其更改为新的有效电子邮件,此错误仍然存在...
问题:最后一种情况如何处理?
我有两个假设:
- HTML 属性的顺序很重要:
autofocus email-unique ng-focus required -
emailUnique指令代码中的setValidity方法避免ctrl再次成为$valid,然后阻止再次执行邮件比较。
【问题讨论】:
标签: javascript validation angularjs