邮件验证angularjs

时间:2013-02-18 15:05:22

标签: angularjs angularjs-directive

我对angularjs和电子邮件输入类型有疑问。

我想用指令创建动态输入,但输入类型验证可能有问题。 这是我测试的jsfiddle http://jsfiddle.net/NPCHr

为了避免一些麻烦,我必须使用这个技巧

element.find('input')[0].type = input.type;

当我在输入中有第二个字符时,模型字段消失(在html面板中)

我不知道为什么这是一个错误或者我做错了什么?

1 个答案:

答案 0 :(得分:0)

您的指令的问题不在于电子邮件验证不起作用,而是AngularJS(和jQuery BTW)不支持动态type属性这一事实。这是因为IE不允许动态更改输入类型(Changing the <input> type in IE with JavaScript)。

在AngularJS邮件列表中详细讨论了这个主题,这里有一个参考:https://groups.google.com/forum/#!topic/angular/Itl-fYzeF18,其中有人和你的问题完全相同。

摆脱这种情况的方法是使用$compile服务手动编译模板。不幸的是,这不是微不足道的,你可以在这里看到一些实验的证据:https://github.com/angular-ui/angular-ui/pull/191

另一种更简单的方法是使用ngInclude指令根据其类型包含不同的输入。另一种可能性是使用编译功能并手动转换模板的标记。但是,所有这些技术都需要几行非平凡的代码。