我对 angularjs 和电子邮件输入类型有疑问。
我想使用指令创建动态输入,但输入类型验证可能有问题。这是我测试的 jsfiddle http://jsfiddle.net/NPCHr
为了避免一些麻烦,我必须使用这个技巧
element.find('input')[0].type = input.type;
当我在输入中有第二个字符时,模型字段消失(在 html 面板中)
我不知道为什么这是一个错误或者我做错了什么?
我对 angularjs 和电子邮件输入类型有疑问。
我想使用指令创建动态输入,但输入类型验证可能有问题。这是我测试的 jsfiddle http://jsfiddle.net/NPCHr
为了避免一些麻烦,我必须使用这个技巧
element.find('input')[0].type = input.type;
当我在输入中有第二个字符时,模型字段消失(在 html 面板中)
我不知道为什么这是一个错误或者我做错了什么?
您的指令的问题不在于电子邮件验证不起作用,而是type
AngularJS(和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
指令来根据类型包含不同的输入。另一种可能性是使用编译功能并手动转换模板的标记。但是,是的,所有这些技术都需要几行重要的代码。