Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Validacija texta

[es] :: Javascript i AJAX :: Validacija texta

[ Pregleda: 1769 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

mladenmp

Član broj: 193827
Poruke: 51
89.188.32.*

Jabber: info@mladenmp.ml
Sajt: www.mladenmp.ml


+1 Profil

icon Validacija texta02.04.2009. u 00:32 - pre 183 meseci
Treba mi pomoc oko sledeceg problema. Treba da napisem javascript za validaciju tekstualnih polja.

Tekstualna polja treba da prime podatke broju indeksa (koji treba da je oblika dd/dddd, na primjer 12/2004, gdje godina treba da bude veća od 1979 a manja ili jednaka od tekuće godine) i prosječnoj ocjeni studenta (realan broj sa 2 decimale iz intervala [5,10]).

Svaka pomoc bi mi izuzetno koristila jer sam pocetnik.
 
Odgovor na temu

Nikola Poša
Backend (PHP) developer
Beograd

Član broj: 173839
Poruke: 1616
*.adsl-a-1.sezampro.yu.



+33 Profil

icon Re: Validacija texta02.04.2009. u 10:12 - pre 183 meseci
Evo napisao sam na brzinu f-ju za validaciju indeksa u tom formatu, pa ti probaj:
Code:

function validacija_indeksa(br_indeksa) {
    if (br_indeksa.indexOf('/') == -1) {
        return false;
    }
    
    br_god = br_indeksa.split('/');
    
    if (br_god[0].length != 2 || br_god[1].length != 4) {
        return false;
    }
    
    if (br_god[0].charAt(0) < '0' || br_god[0].charAt(0) > '9' || br_god[0].charAt(1) < '0' || br_god[0].charAt(1) > '9') {
        return false;
    }
    
    godina = parseInt(br_god[1]);
    if (godina == 'NaN') {
        return false;
    }
    else {
        var dt = new Date();
        if (godina < 1979 ||  godina > dt.getFullYear()) {
            return false;
        }
    }
    
    return true;
    
}

A mogao bi da je testiraš npr. ovako:
Code:

function provera() {
    var br_indeksa = document.getElementById('indeks').value;
    
    if (!validacija_indeksa(br_indeksa)) {
        alert('Uneti broj indeksa nije validan.');
    }
    else {
        alert('Ok');
    }
}

Samo naravno pre toga napravi neko tekstualno polje sa id-em indeks i neko dugme koje ima onclick = "provera();".

Elem, kod mene na faksu format indeksa je ddd/dd (npr. 100/09).

E aj' sad ti probaj sam ovo za prosečnu ocenu studenta.

P.S. Ova f-ja je verovatno mogla da se zameni sa nekim regularnim izrazom, samo ja ne znam kako bi se onda godina ograničavala na taj opseg od 1979 do 2009, odnosno, do trenutne godine.

P.P.S. Ako ovo radiš samo zbog nekog domaćeg zadatka ili seminarskog, nebitno, onda ok, ali u realnim uslovima, nemoj nikad da se oslanjaš na validaciju na klijentskoj strani.

[Ovu poruku je menjao Nikola Poša dana 02.04.2009. u 11:23 GMT+1]
 
Odgovor na temu

Nikola Poša
Backend (PHP) developer
Beograd

Član broj: 173839
Poruke: 1616
*.adsl-a-1.sezampro.yu.



+33 Profil

icon Re: Validacija texta02.04.2009. u 12:04 - pre 183 meseci
Evo ipak ja da ti napišem i tu drugu f-ju za prosek:
Code:

function validacija_proseka(prosek) {
    if (prosek.length > 4) {
        return false;
    }
    
    for (var i = 0; i < prosek.length; i++) {
        if (prosek.charAt(i) < '0' && prosek.charAt(i) > '9' && prosek.charAt(i) != '.' && prosek.charAt(i) != ',') {
            return false;
        }
    }
    
    if ((prosek.indexOf('.') != -1 || prosek.indexOf(',') != -1) && (prosek.indexOf('.') != prosek.lastIndexOf('.') || prosek.indexOf(',') != prosek.lastIndexOf(','))) {
        return false;
    }
    
    if (prosek.charAt(prosek.length - 1) == '.' || prosek.charAt(prosek.length - 1) == ',') {
        return false;
    }
    
    broj = parseFloat(prosek);
    
    if (isNaN(broj)) {
        return false;
    }
    
    if (broj < 5 || broj > 10) {
        return false;
    }
    
    return true;
}

Uzeo sam u obzir da ta decimala može da bude ili '.' ili ',', pa zato imam te dugačke if-ove.
 
Odgovor na temu

Nikola Poša
Backend (PHP) developer
Beograd

Član broj: 173839
Poruke: 1616
79.175.65.*



+33 Profil

icon Re: Validacija texta02.04.2009. u 17:56 - pre 183 meseci
U stvari, evo ovo su bolja rešenja, al' njih namerno nisam hteo odma' da pošaljem da te ne bih zbunio sa regularnim izrazima:

Validacija broja indeksa:
Code:

function validacija_indeksa(br_indeksa) {
    var pattern = /^[0-9]{2}\/[0-9]{4}$/;
    var dt = new Date();
    var godina = parseInt(br_indeksa.substr(-4));
    
    if (pattern.test(br_indeksa) && godina >= 1979 && godina <= dt.getFullYear()) {
        return true;
    }
    else {
        return false;
    }
}

Validacija prosečne ocene:
Code:

function validacija_proseka(prosek) {
    var pattern = /^[5-9]([\.\,][0-9]{2})?$/;
    
    if (pattern.test(prosek) ||  prosek == '10') {
        return true;
    }
    else {
        return false;
    }
}

Kraće, jednostavnije, čitljivije...
 
Odgovor na temu

Aleksandar Ružičić
Software Architect, Appricot d.o.o.
Beograd

Član broj: 26939
Poruke: 2881

Jabber: krckoorascic@gmail.com
Sajt: krcko.net


+44 Profil

icon Re: Validacija texta02.04.2009. u 21:35 - pre 183 meseci
Citat:
Nikola Poša:Kraće, jednostavnije, čitljivije... :)

i ne bas 100% ispravno :)

za prvi deo ces imati problema sa internet explorerom, koji bas ne voli negativni index u substr, ovo je sigurnije:
Code:

var godina = parseInt(br_indeksa.substr(3));


inace, evo one-linera za taj problem (mada je ipak preglednije u vise linija):
Code:

function validateIndex(index) {
   return index.match(/^\d{2}\/(\d{4})$/) && (RegExp.$1 << 0 >= 1979) && (RegExp.$1 << 0 <= (new Date).getFullYear());
}

 
Odgovor na temu

mladenmp

Član broj: 193827
Poruke: 51
89.188.32.*

Jabber: info@mladenmp.ml
Sajt: www.mladenmp.ml


+1 Profil

icon Re: Validacija texta03.04.2009. u 00:44 - pre 183 meseci
Veliko HVALA Nikoli, i naravno Aleksandru.

Napomenuo sam da sam pocetnik a NIkolina rijesenja su mi pomogla da shvatim kako u buduce da radim
sa javascriptom.

Hvala i za regularne izraze koji su mnogo prakticniji.

Interesuje me gdje mogu da nadjem nesto vise o regularnim izrazima?

Jos jednom veliko hvala.
 
Odgovor na temu

Nikola Poša
Backend (PHP) developer
Beograd

Član broj: 173839
Poruke: 1616
*.adsl-a-1.sezampro.yu.



+33 Profil

icon Re: Validacija texta03.04.2009. u 15:36 - pre 183 meseci
Nema na čemu.

Što se tiče regularnih izraza, ne bih znao tačno da te usmerim na određeni sajt. Google-aj, tako je najbolje.
 
Odgovor na temu

Aleksandar Ružičić
Software Architect, Appricot d.o.o.
Beograd

Član broj: 26939
Poruke: 2881

Jabber: krckoorascic@gmail.com
Sajt: krcko.net


+44 Profil

icon Re: Validacija texta03.04.2009. u 18:37 - pre 183 meseci
sto se tice RE, http://www.regular-expressions.info/ moze biti dobro mesto za pocetak
 
Odgovor na temu

[es] :: Javascript i AJAX :: Validacija texta

[ Pregleda: 1769 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.