2013-02-18 102 views
0

我有一個angularjs和電子郵件輸入類型的問題。郵件驗證angularjs

我想使用指令創建動態輸入,但輸入類型驗證可能是錯誤的。 這是我測試的jsfiddle http://jsfiddle.net/NPCHr

爲了避免一些麻煩,我有當我在模型字段消失輸入第二個字符(在HTML面板)使用此招

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

我不知道爲什麼這是一個錯誤,或者我做錯了什麼?

回答

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指令根據其類型包含不同的輸入。還有一種可能是使用編譯功能並手動轉換模板的標記。但是,所有這些技術都需要幾行非平凡的代碼。