2014-02-05 87 views
5

由於我的表單沒有標籤,我想能夠使用不同的佔位符角和角-UI-utils的面膜:是否可以使用不同的佔位符屏蔽輸入?

<div ng-controller="myController"> 
    <input type="text" 
     ng-model="date" 
     ui-mask="99/99/9999" 
     placeholder="Birth Date"/> 
</div> 

使用jquery-inputmask它就像一個魅力,但我有太多許多問題,使之與角,所以我現在試圖去角的方式工作,但角度顯示了我的輸入爲:

Bi/th/Date 

這裏有一個小提琴表現出來:http://jsfiddle.net/XS4R6/

我也看到一些人談論一個回合'掩碼佔位符',但它什麼都不做。

有沒有辦法做到這一點?

編輯

爲了澄清,我認爲這是蠻好用的只是placeholders因爲你還可以使用titles(提示),所以人總是知道什麼是他們應該在這些輸入到輸入:

​​

顯示__.___.___的輸入是我正在使用Angular UI Mask的輸入。

JQuery Inputmask的工作非常好,因爲它顯示'名稱'佔位符,只要我鼠標懸停或點擊輸入它顯示掩碼。

+0

我認爲這是罰款不使用的標籤。編輯以顯示錶單的形式以及Angular在做什麼。 JQuery Inputmask的工作原理非常好,因爲它顯示'name'佔位符,只要我將鼠標懸停或單擊輸入它顯示掩碼。 –

+0

我需要這個功能,不得不溝通'ui-mask'並實現我自己的功能。 :( –

+5

@JonathanRowny你介意分享你的解決方案嗎? – fampinheiro

回答

1

我想你可以使用另一個標籤來模擬佔位符,也許這裏的代碼不是很好,但我只是提供了另一種想法。在http://jsfiddle.net/XS4R6/19/

app.directive("myPlaceholder", ['$compile', function($compile){ 
return { 
    restrict: 'A', 
    link: function(scope, elem, attr) { 
     attr.$observe('myPlaceholder', initialize); 
     var mask = '__/__/____'; 

     function initialize(value) { 
      // label is not clickable in IE, that's the reason why we use span tag 
      var fakePlaceholder = angular.element('<span class="placeholder">' + value + '</span>'); 
      // click placeholder to focus the input 
      fakePlaceholder.on('click', function(){ 
       elem.focus(); 
      }); 
      elem.before(fakePlaceholder); 
      $compile(fakePlaceholder)(scope); 

      elem.on('focus', function() { 
       fakePlaceholder.hide(); 
      }).on('blur', function() { 
       if (elem.val() === mask) { 
        fakePlaceholder.show(); 
       } 
      }); 
     } 
    } 
}; 
}]); 

演示(jQuery的需要)

相關問題