Kompakt jelszó mező
Ma aboros keresett egy módot arra, hogy "kompakttá tegye" az űrlapmezőket. Ennek célja hogy az űrlapmezők cimkéje a mezőben magában jelenjen meg és ha belekattintunk a mezőbe, akkor a cimke eltűnik, ha nem írunk bele semmit, akkor a mezőt elhagyva újra a cimke jelenik meg. Nyilván ha kitöltöttük a mezőt, akkor a kitöltött érték marad a mezőben annak elhagyása után. Ezt megoldani nem nagy trükk egy kis sminkeléssel, ám ha szeretnénk a jelszó mezőket is ilyen kompakt formára hozni, akkor gyorsan beleütközünk abba, hogy a böngészők a jelszó mezőket "kicsillagozzák". Szóval hiába rakjuk a value="Jelszó" kezdeti értéket bele, ott 6db csillag fog szerepelni. Nem túl informatív, ugye.
Álljon itt egy megoldás a problémára, ami nekem nagyon sokszor jött már jól. A technika lényege, hogy a jelszó mezőt elrejtjük és a helyére berakunk egy textfield mezőt a cimkével, mint tartalommal. Amikor a felhasználó belekattint, akkor lecseréljük a textfieldet a jelszómezőre. Amikor elhagyjuk a mezőt, akkor visszacseréljük a két mezőt.
Alább egy kódrészlet, ami ezt megvalósítja. Drupal 6 alatt tesztelve.
function compactPasswordFields(selector) { $(selector).each(function() { var passwordField = this; var passwordFieldId = $(passwordField).attr("id"); var passwordFieldClasses = $(passwordField).attr("class"); var passwordLabel = $("label[for="+passwordFieldId+"]"); var spoofTextField = $("<input id=\""+passwordFieldId+"-spoof\" type=\"text\" value=\""+passwordLabel.text()+"\" class=\""+passwordFieldClasses+"\" />"); /* Only proceed if the password field isn't prepropulated */ if ($(passwordField).val().length == 0) { $(passwordField, passwordLabel).hide(); $(passwordField).before(spoofTextField); $(passwordField).blur(function() { if ($(passwordField).val().length == 0) { $(passwordField).toggle(); $(spoofTextField).toggle(); } }); $(spoofTextField).click(function() { $(passwordField).toggle(); $(spoofTextField).toggle(); $(passwordField).focus(); }); } }); } $(document).ready(function() { /* Run this a hundred milliseconds later to let the browser pre-fill password fields */ setTimeout("compactPasswordFields(\"input.password-field, input.password-confirm\")", 100); });
Használjátok egészséggel!
Update: Van ám egy jobb megoldás is a TopNotchThemes-től: http://www.topnotchthemes.com/blog/081204/horizontal-user-login-block-us...
Friss hozzászólások
5 hét 4 nap
21 hét 5 nap
29 hét 5 nap
30 hét 5 nap
41 hét 9 óra
41 hét 11 óra
46 hét 3 óra
47 hét 1 nap
47 hét 1 nap
1 év 2 hét