Forum » Programiranje » [javaScript] Preverjanje formata zapisa EMŠO
[javaScript] Preverjanje formata zapisa EMŠO
Cvenemir ::
Lp.
K sledeči kodi, bi rad dodal k preverjanju pravilnega vnosa EMŠO še preverjanje, ali vhodni string vsebuje le števila in ne črk. poskusil sem takole:
To kodo sem dodal v zanko, kjer preverim, če je dolžina stringa sploh 13 (vrstica 20). Problem je v tem, da mi vedno javi napako, čeprav vpišem le števila.
Koda funkcije:
K sledeči kodi, bi rad dodal k preverjanju pravilnega vnosa EMŠO še preverjanje, ali vhodni string vsebuje le števila in ne črk. poskusil sem takole:
for(i=0; i<x.length; i++) { poljeZnakov[i] = x.charAt(i); if(!isNaN(poljeZnakov[i])) { alert("Vnesite samo cela stevila!"); } }
To kodo sem dodal v zanko, kjer preverim, če je dolžina stringa sploh 13 (vrstica 20). Problem je v tem, da mi vedno javi napako, čeprav vpišem le števila.
Koda funkcije:
function validateEMSO() { var x = document.forms["EMSO"]["emso"].value; if (x == null || x == "") { alert("Polje za vnos je prazno!"); return false; } else if(x.length < 13) { alert("EMSO je prekratek!"); return false; } else if(x.length > 13) { alert("EMSO je predolg!"); return false; } else if(x.length == 13) { var i; var poljeZnakov = [12]; var vsota=7*parseInt(x.charAt(0))+6*parseInt(x.charAt(1))+5*parseInt(x.charAt(2))+4*parseInt(x.charAt(3))+3*parseInt(x.charAt(4))+2*parseInt(x.charAt(5))+7*parseInt(x.charAt(6))+6*parseInt(x.charAt(7))+5*parseInt(x.charAt(8))+4*parseInt(x.charAt(9))+3*parseInt(x.charAt(10))+2*parseInt(x.charAt(11)); var ostanek = vsota/11; if(ostanek == 0) { K = x.charAt(12); K = 0; alert("EMSO je pravilen!"); } else { K = x.charAt(12); K = 11-ostanek; if(K == 10) { alert("Vnesli ste napacen EMSO!"); } else { alert("EMSO je pravilen!"); } } } }
nightrage ::
Probi s tole funkcijo:
function numbersonly(myfield, e, dec) { var key; var keychar; if (window.event) key = window.event.keyCode; else if (e) key = e.which; else return true; keychar = String.fromCharCode(key); // control keys if ((key==null) || (key==0) || (key==8) || (key==9) || (key==13) || (key==27)) return true; //decimal else if (keychar == ".") { if (myfield.value == "") { return false; } else { if (!ifDotExist(myfield.value)) { return true; } else { return false; } } } // numbers else if ((("0123456789").indexOf(keychar) > -1)) return true; // decimal point jump /*else if (dec && (keychar == ".")) { myfield.form.elements[dec].focus(); return false; }*/ else return false; }
Cvenemir ::
Kako pa naj preverim, če je prvi znak vpisne številke črka?
Poskusil sem takole, a ne izpiše nobenega obvestila.
Poskusil sem takole, a ne izpiše nobenega obvestila.
function validateVpisna() { var y = document.forms["vpisna"]["vpisnaST"].value; if (y == null || y == "") { alert("Polje za vpisno številko je prazno!"); return false; } else if(y.length < 8) { alert("Vnesli ste prekratko vpisno stevilko!"); } else if(y.length > 8) { alert("Vnesli ste predolgo vpisno stevilko!"); } else { var prviZnak = y.charAt(0); if((prviznak >= "a" && prviZnak <= "z") || (prviznak >= "A" && prviZnak <= "Z")) { alert("Vnesli ste veljavno vpisno stevilko."); } else { alert("Vnesli ste neveljavno vpisno stevilko."); } } }
KernelPanic ::
Probaj implementirat KeyActionListener na vnosno polje in nato ob vsakem pritisku tipke preveris, ali je stevilka. Obenem tudi stejes stevilo pritiskov, ko je enak 13, zakljucis stvar.
eVro ::
Nisem ravno ekspert, ampak če poskušaš EMŠU prišteti 1 in preveriš tip rezultata, a ne bo NaN če je bila v emšu kakšna neštevilka?
mr1two ::
uporabi to
Poglej si, ker je simpl zadeva za uporabo, če lahko to uporabiš tudi v javascriptu.
String niz="221197950511a";
Pattern p = Pattern.compile("^[A-Za-z]+$");
p.matcher(niz).matches();
Poglej si, ker je simpl zadeva za uporabo, če lahko to uporabiš tudi v javascriptu.
Zgodovina sprememb…
- spremenil: mr1two ()
win64 ::
Poleg preverjanja, če je niz številka in če je niz dolg 13 znakov, moraš preveriti tudi kontrolno številko.
Več na: Enotna mati%C4%8Dna %C5%A1tevilka ob%C4%8Dana @ Wikipedia
Več na: Enotna mati%C4%8Dna %C5%A1tevilka ob%C4%8Dana @ Wikipedia
var preveri=function(niz){ var checks = [7,6,5,4,3,2,7,6,5,4,3,2] var vsota=0 ; if(isNaN(niz)) return false; if(niz.length != 12) return false; for(var i=0; i<niz.length-1; i++) vsota+=checks[i]*niz[i]; vsota %= 11; return (vsota!=10) && (11-vsota==niz[12] || (vsota==niz[12] && vsota==0) ); }
Cvenemir ::
Kako bi pa dodal, da se pojavi gumb "Submit", ko sta obe števili vnešeni pravilno?
Pa še tole: Odkar sem dodal funkcijo samoStevilke, se funkcija validateEmso ne izvede več. Kaj je potrebno spremeniti?
Pa še tole: Odkar sem dodal funkcijo samoStevilke, se funkcija validateEmso ne izvede več. Kaj je potrebno spremeniti?
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=windows-1250" /> <script type="text/javascript"> function validateEMSO() { var x = document.forms["EMSO"]["emso"].value; if (x == null || x == "") { alert("Napačen vnos. (prazen string)"); } else if(x.length != 13) { alert("Napačen vnos. (Predolgo/prekratko število)"); } var kontrola = [7, 6, 5, 4, 3, 2, 7, 6, 5, 4, 3, 2]; var vsota = 0; var i; for(i = 0; i<x.length - 1; i++) { vsota += kontrola[i] * x[i]; } vsota = vsota % 11; if(vsota <= 1 && vsota <= 9) { x.charAt(12) = vsota; } else if(vsota == 10) { alert("Zadnje številke EMŠO ni mogoče izračunati."); } else if(vsota == 11) { x.charAt(12) = 0; } function validateVpisna() { var y = document.forms["vpisna"]["vpisnaST"].value; if (y == null || y == "") { alert("Polje za vpisno številko je prazno!"); return false; } else if(y.length != 8) { alert("Vnesli ste prekratko/predolgo vpisno številko!"); } else { var prviZnak = y.charAt(0); if((prviznak >= "a" && prviZnak <= "z") || (prviznak >= "A" && prviZnak <= "Z")) { alert("Vnesli ste veljavno vpisno stevilko."); } else { alert("Prvi znak mora biti črka."); } } } </script> </head> <body> <script language="JavaScript"> function samoStevilke(evt) { var e = event || evt; var charCode = e.which || e.keyCode; if (charCode > 31 && (charCode < 48 || charCode > 57)) { alert("Vnašate lahko samo števila od 1-9"); emso1.value="" return false; } else { return true; } } </script> <p><h2>Vnesite zahtevane podatke</h2></p> <form id="form1" name="EMSO" onsubmit="return validateEMSO();"> EMŠO: <input type="text" name="emso" id="emso1" onkeypress="return samoStevilke();" maxlength="13" /><br /> </form> <form id="form1" name="vpisna" onsubmit="return validateVpisna()"> Vpisna Številka: <input type="text" name="vpisnaST" /> </form> </body> </html>
win64 ::
In dodaj type="text/javascript" tudi v spodnjo značko script.
Poglej v konzolo brskalnika za napako
Če imaš chrome ali IE ali dodatek firebug je to na voljo s pritiskom na F12.
Konzolo za firefox pa dobiš s pritiskom ctrl+shift+k.
V konzoli ti prikaže kje je sintaktična napaka.
Poglej v konzolo brskalnika za napako
Če imaš chrome ali IE ali dodatek firebug je to na voljo s pritiskom na F12.
Konzolo za firefox pa dobiš s pritiskom ctrl+shift+k.
V konzoli ti prikaže kje je sintaktična napaka.
Cvenemir ::
Zdaj ko sem zaključil funkcijo mi ne javi nobene napake več. Zanima me še, kako bi ustvaril gumb za pošiljanje podatkov (submit), kateri se prikaže šele, ko je validacija obeh textboxov uspešna.
win64 ::
s css-ji
gumbu nastavi style na "display:none"
v javascriptu ga prikažeš z:
form.tvojSubmitGumb.style.display = "inline"
in skriješ z:
form.tvojSubmitGumb.style.display = "none"
gumbu nastavi style na "display:none"
v javascriptu ga prikažeš z:
form.tvojSubmitGumb.style.display = "inline"
in skriješ z:
form.tvojSubmitGumb.style.display = "none"
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | JavascriptOddelek: Programiranje | 1179 (992) | amacar |
» | Javascript pomočOddelek: Izdelava spletišč | 2048 (1604) | Lion29 |
» | [Java][Naloga] SkladiOddelek: Programiranje | 1675 (1474) | bijonda |
» | Internet strani kot slideshowOddelek: Izdelava spletišč | 2110 (1861) | sverde21 |
» | read integer v javiOddelek: Programiranje | 1376 (1277) | kopernik |