[JS] Maska na pole tekstowe

0

Wiem, to czyste lenistwo... Nie chce mi sie samemu myslec tym razem [wstyd]
Znalazlem kilka skryptow, ale wszystkie dzialaja tylko pod IE. Wie ktos moze gdzie znajde skrypt, ktory nalozy mi maske na pole tekstowe (np. ##-### dla kodu pocztowego) i bedzie dzialal pod wieksza iloscia przegladarek? A moze ktos ma jakis wlasny pomysl? ;)

0

Inputy maja wszystkie OnKeyDown i takie tam, mozesz sie pobawic w sprawdzanie np. jesli to 3 znak to musi byc "-" itp.

0

Tak, na to wpadlem. Napisalem taka prosciutka funkcje:

function maska () {
  if (document.form.kod.value.length == 2) {
    document.form.kod.value = document.form.kod.value + '-';
  }
}

W przypadku IE wszystko dziala bezproblemowo, ale np. Opera dodaje mi znak zawsze na koncu wiersza. Dokladniej wyglada to tak (poszczegolne kroki oddzielam przecinkami):

IE robi tak > "6", "60-", "60-1", "60-11", "60-115"
a kochana Opera tak > "6, "60-", "601-", "6011-", "60115-"

Da sie to jakos obejsc?

Edit. Cos mi zaswitalo w glowie... Zaraz odezwe sie czy mi sie udalo i ew. bede dalej prosil o pomoc lub nie :)</b>

Poki co nie udaje mi sie zrealizowac mojego pomyslu, wiec - mimo, iz dalej probuje - prosze o pomoc.

0

Może dla opery należy przesunąć położenie karetki na koniec.
BTW rozważałoś co stanie się jeśli użytkownik będzie chciał skasować swo w pis za pomocą klawisza backspace, bez zaznaczenia całości tekstu??
nie sprawdzałem ale na zdrowy rozsądek to się pokrzaczy.

0

No fakt. Nie mozna w takim wypadku skasowac backspacem znakow, poniewaz warunek jest spelniony za kazdym razem, gdy dlugosc stringu ma wartosc 2.
Jak sie karetke przesuwa nie mam pojecia, ale faktycznie teraz mam wiecej klopotow ;P W ogole teraz zauwazylem, ze opera dziwnie sie zachowuje... Wstawia czasem znaki podwojnie, czasem backspace usuwa dwa znaki, raz wstawiane sa znaki na koncu wiersza, a raz gdzies w srodku 8-0 Szlag mnie zaczyna trafiac ;)

0

a nie łatwiej jest wstawić dwa inputy??
i po sypwłnieniu pierwszego na długość dwa dać fokusa na drugi??

0

Myslalem o tym :> To chyba optymalne rozwiazanie.
No ale swoja droga ciekawe z czym Opera ma w tym przypadku tak naprawde problem :-/
Tak czy siak teraz juz wiem jak rozwiazac problem, dzieki nul [browar]

0

twórcy opery jak widać chcą sę wyróżnić i w każdej wersji przeglądarki coś innego się krzaczy. można ją oszukać ale komu by się chciało?

0

Niech usprawiedliwieniem dla Opery bedzie fakt, ze FF tez sie z tym meczy. Wstawia co prawda dodawany znak w odpowiednim miejscu, ale podobnie jak Opera wstawiane znaki sa dublowane ("6-6", "66-66"...)

0

spróbuj zamiast onkeydown dać onkeyup może zadzaiała miałęm kiedyś inny problem i pomogło zmienienie na onkeyup

0

Możesz też użyć onkeypress a co do tego backspace to stwórz po prostu zmeinną tymaczasową i przechowuj w niej wartośc pola przed wcisnięciem klaiwsza i tym sposobem możesz łątwo sprawdzić czy wstawiono czy usunięto znak a jak zostanie ci po usunięciu jednego znaku takie coś 99- i ktoś znowu usunie znak to ty sam usuń drugi i w ten sposób ominiesz problem wiecznego dostaiwania myślnika :). nic mondrzejszego już chynba nie wymyślę

0

O, to chyba najlepsze rozwiazanie bedzie. Pokombinuje sobie po powrocie z pracy. Dzieki za pomoc [!!!]

0

spox

1 użytkowników online, w tym zalogowanych: 0, gości: 1