2013-09-25 10 views
5

Mam konfigurację maski na polu daty przy użyciu modułu maski kątowe-ui tak:angularjs maskować znaków nadpisywania

<input type="text" 
    id="date" 
    ng-model="transaction.date" 
    ui-mask="99/99/9999" /> 

Jeśli mam 30/05/2013 w tej dziedzinie i chcesz to zmienić, aby 10.05.2013, po prostu umieszczając "1" na początku, przesuwa wszystkie postacie, tak aby stał się 13/00/5201.

Czy istnieje sposób zmuszenia maski ui do zastąpienia wstawionej postaci? (To uratować kogoś przed uderzeniem „Usuń”, a następnie znak

Przykład:. http://jsfiddle.net/5NbD7/ Jeśli wpiszesz „30” z przodu moim przykładzie będzie skończyć z 30/01/0120 wolałbym to przesłonić znaków i produktów 30/01/2010

+1

mógłbyś postawić jsfiddle? – Strawberry

+1

Sprawdziłem to i nie rozumiem, dlaczego chciałbyś, aby UX zachowywał się w ten sposób. Czy chcesz, aby usunąć literę podczas pisania? Co się dzieje, gdy użytkownik nie chce usunąć postaci? Myślę, że jest to o wiele bardziej intuicyjne, niż to, o co prosisz. – Strawberry

+0

To działałoby dobrze na ekranach wprowadzania danych, w których próbujemy zapisać każde naciśnięcie klawisza. – map7

Odpowiedz

4

Nie wiem, czy jest łatwiejszy sposób, ale możesz wypróbować następujące:

  • Będziesz musiał pobrać plik maskę.js, unminified, ze źródła i połączyć go w swoim html, jeśli jeszcze tego nie zrobiłeś.

https://rawgithub.com/angular-ui/ui-utils/master/modules/mask/mask.js

  • Potem trzeba będzie zmodyfikować kod źródłowy mask.js tak (Wyszukiwanie, za komentarz //Update Values i umieścić ten kod poniżej):

...

  // Update values 
      if (oldValueUnmasked !== "" && oldValueUnmasked!==valUnmasked && !isDeletion) { 
      var charIndex = maskCaretMap.indexOf(caretPos); 
      if (charIndex === -1) { 
       charIndex = maskCaretMap.indexOf(caretPos+1); 
      } 
      valUnmasked=valUnmasked.substr(0,charIndex).concat(oldValueUnmasked.substr(charIndex,valUnmasked.length)); 
      } 

...

Teraz, przed aktualizacją wartości, maska ​​dokona scalenia znaków w starej wartości i tych w nowej wartości, w zależności od położenia kursora (kreski).

W żadnym wypadku nie jest to rozwiązanie odporne na korozję, ale powinno dać ci pojęcie, gdzie szukać, jeśli chcesz dostosować dane wejściowe bardziej lub sprawdzić, czy ta zmiana nie narusza niczego innego.

Fiddle: http://jsfiddle.net/CALvj/

1

Myślę, że sposób wpisywania znaków jest wstawiany lub zastępowania tekstu wejściowego zależy od trybu wstawiania klawisza klawiatury.Użytkownicy mogą po prostu zmienić domyślne naciśnięcie klawisza Ins. Jedyny sposób na zmianę to z kodu wymusiłoby wciśnięcie klawisza Ins, ale to nie jest dozwolone w Javascript.

+0

Naciśnięcie klawisza "wstawiania" w polu tekstowym lub w polu tekstowym nie zmienia go w celu zastąpienia tekstu. – map7

Powiązane problemy