0

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

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

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

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

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

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

4

1 回答 1

0

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

该主题在 AngularJS 邮件列表中进行了详细讨论,以下是参考:https ://groups.google.com/forum/#!topic/angular/Itl-fYzeF18有人遇到与您完全相同的问题。

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

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

于 2013-02-18T15:28:04.250 回答