Spreminanje input type text v input type password – Javascript
Pri projektu na katerem trenutno delam sem moral narediti Javascript, ki spremeni HTML Input objekt, ki je tipa text v tipa password. Zadeva je morala delovati v vseh standardnih brskalnikih (preizkušeno na IE 5.5, 6.0, 7.0, Opera, Safari, Firefox).
#1 HTML Input objekt tipa text, ki ga hočemo spremeniti v tipa password
-
<input name="password" onfocus="changeInputType(this, 'password');" type="text" value="Password" />
Javascript koda:
-
function changeInputType(prevObject, type) {
-
var passInput = document.createElement('input');
-
passInput.setAttribute('type', type);
-
passInput.setAttribute('name', prevObject.getAttribute('name'));
-
passInput.className = 'logfield';
-
passInput.id = 'passInput';
-
prevObject.parentNode.replaceChild(passInput, prevObject);
-
-
setTimeout("focusInput('passInput');", 1);
-
}
Opis:
Najprej kreiramo nov input objekt, dodamo tip objekta (v našem primeru password), določimo isti ime kot ga ima naš trenutni input katerega želimo zamenjati. Po želji dodamo še CSS class (za IE je potrebno uporabiti className = 'css class'. Potrebujemo še ID, da bomo lahko element potem fokusirali.
Ko imamo element pripravljen ga nadomestimo z prejšnim elementom (elementom input type text v našem primeru). Če uporabimo sledeče kodo za fokusiranje elementa:
-
passInput.focus();
... zadeva NE deluje v IE. Če pa vmes naredimo malce pavze (lahko naredimo tudi zanko za določeno število milisekund) in fokusiramo element potem zadeva začne delovati tudi v IE:
-
function focusInput(objectID) {
-
document.getElementById(objectID).focus();
-
}
Datoteke:
Dodatne informacije:
Delodajalec: Pangaea.si
Podobni članki:
- Javascript – input text – le številke – validacija
- Javascript koledar – izbira datuma – jQuery date picker
- Kako preprečiti dvojno pošiljanje obrazca z pomočjo Javascript-a (form submit)
- Input background-color – spreminjanje z Javascript-om
- Javascript – document.getElementsByTagName
- Shrani datoteko / Odpri datoteko dialog – download center (mime-type, Content-type, Content-Disposition)
- PHP – kako ugotoviti tip datoteke (get file extension type)
- Javascript – scrolling – jQuery.scrollTo – jQuery.SerialScroll
- PHP funkcije v Javascript jeziku – isset
- Javascript – delci uporabne kode



April 25th, 2008 ob 7:11 am
Drugo vprašanje je, zakaj bi to sploh hotel naredit. Js se konkretno ne spomnim primera, da oz. zakaj bi spreminjal navadno polje v password. Elaborate?
April 25th, 2008 ob 8:44 am
Pri nam je bilo tako, da je bilo v designu narejen da sta pri loginu dva inputa kjer Piše znotraj Inputa:
Username | Password
In če uporabiš type="password", pol se namesto Password izpiše "********". Bom dodal gor primer.
April 25th, 2008 ob 9:20 am
V bistvu dober primerek! Bravo!
April 25th, 2008 ob 9:25 am
Jp. Primerek delovanja kjer je še malce boljša koda, ki input še če je prazen ali vsebuje Password spremeni nazaj v text input.
April 25th, 2008 ob 4:44 pm
Jaz sem tole naredil na malo bolj začetniški način
HTML:
JS:
function izprazni_pass() {
if(document.loginform.password.value == "geslo") {
document.loginform.password.value = "";
document.loginform.password.type = "password";
}
}
//če uporabnik nič ne vpiše v input
function napolni_pass() {
if(document.loginform.password.value == "") {
document.loginform.password.type = "text";
document.loginform.password.value = "geslo";
}
}
April 25th, 2008 ob 6:21 pm
u bistvu ne razumem zakaj je treba zamenjat objekt... lahko tudi po začetniško rešiš (nastaviš type = password), pa še bolj enostavno je
razn če je kej uzadi, da to ne dela v x brskalnikih...
April 26th, 2008 ob 9:30 am
Zato da je fenci-šmenci ... to se danes prodaja
April 27th, 2008 ob 4:23 pm
Na tak način je to "nevarno" za tiste ki imajo izklopljen javascript
Boljše bi bilo najprej narediti input tipa password in ga onload() spremeniti v tekst
April 28th, 2008 ob 6:34 pm
Arjan: Tudi če nimajo javascript se uporabi text, kar pomeni da bo logiranje tudi uspelo, ker se POST podatki enako prenesejo kot pri password ali pa pri type.
Boštjan@FriK: Type=password ne deluje na vseh brskalnikih, drugače bi z veseljem to uporabil.
April 29th, 2008 ob 10:42 am
ja samo lahko kdo vidi password, to je problem, ne kaj druga ...
April 29th, 2008 ob 11:10 am
arjan_t, to pa imaš prav ja. Se strinjam.
August 19th, 2008 ob 11:14 pm
Kako bi pa recimo naredil če bi bio vpisano geslo z zvezdicami da ti to spremeni v valuto text?
August 20th, 2008 ob 9:16 am
Iz gesla težko, ker je tam vrednost ****** .... iz texta inputa pa bi lahko naredu onchange in potem pravilno formatiral text.
October 21st, 2008 ob 10:16 am
Ravnokar mi je tole prišlo prav! Odlično delo, na Google 1. zadetek