Autor | Zpráva | ||
---|---|---|---|
Karlos Profil * |
#1 · Zasláno: 3. 12. 2004, 12:14:26
Mam ve formulari x poli a potrebuju udelat fci ktera zjisti pri odeslani zda se nekde nevyskytuji stejne hodnoty.
Jde to udelat nejak jednoduseji nez> if pole1 == pole2 {} else if pole1 == pole3 {} ... else if pole1 == polex-1 {} else if pole1 == polex {} else if pole2 == pole3 {} else if pole2 == pole4 {} ... else if pole2 == polex-1 {} else if pole2 == polex {} .... else if polex-2 == pole-1 {} else if polex-2 == polex {} else if polex-1 == polex {} endif tyn. vypsat vsechny kombinace. Predpokladam ze to bude nejaka variace na for ale netusim jak. JSku moc nerozumim tak mi pripadne vypiste tu fci celou Predem dik. |
||
llook Profil |
#2 · Zasláno: 3. 12. 2004, 13:24:19
Aha, porovnat každé pole s každým.
Udělal bych to dvěmi for y. Záleží na tom, jak to máš v tom HTML. Předpokládejme, že tam máš tohle:
<input type="text" name="nazev" id="ti1" /> <input type="text" name="dalsi-nazev" id="ti2" /> <input type="text" name="a-dalsi" id="ti3" /> A tak dále... Pak bych to zkontroloval takhle:
Vypadá to obludně, ale je to vpodstatě jednoduchý. |
||
Honza Hučín Profil |
#3 · Zasláno: 3. 12. 2004, 13:42:45
Asi bych to malinko poopravil. Cykly by měly běžet od 1, ne od nuly, protože elementy jsou číslované od 1.
V prvním for cyklu bych psal for (i=1;i<pocet_poli;i++) a v druhém for cyklu je možné psát for (j=i+1; j<=pocet_poli; j++) Ušetří se pár iterací a lze vypustit podmínku if (i==j). |
||
habendorf Profil |
#4 · Zasláno: 3. 12. 2004, 13:43:43
llook: hezký řešení, ale napadá mě vylepšení: pokud dobře chápu, vše se porovnává dvakrát - např 1 s 3 a pak časem 3 s 1.
To je trochu zbytečné. co kdyby ten druhý cyklus začínal for (j=i+1;...) , pak by odpadla i ta podmínka if (i == j) a vzájemné kombinace by se porovnávaly jen jednou. Ale možná kecám, nemám čas to domýšlet...
|
||
habendorf Profil |
#5 · Zasláno: 3. 12. 2004, 13:44:35 · Upravil/a: habendorf
Tak asi musím příště psát rychleji :o)
Ale jsem rád, že jsme se shodli. |
||
Fred Profil |
#6 · Zasláno: 3. 12. 2004, 16:06:06
Mám taky možná hloupý dotaz, moc mi ty pole nejdou. když to teda celý shrnu a jestli jsem to pochopil správně celé to vypadá takhle
<script type="text/javascript"> <!-- function kontrola(){ pocet_poli = 3; for(i=1;i<pocet_poli;i++){ for(j=i+1;j<=pocet_poli;j++){ if(document.getElementById('ti'+i).value==''||document.getElementById( 'ti'+j).value==''){ alert('nezadáno') } else if(document.getElementById('ti'+i).value==document.getElementById('ti' +j).value){ alert('shodují se') } else alert('neshodují se') }}} //--> </script> <form onsubmit="kontrola()"> <input type="text" name="nazev" id="ti1" /> <input type="text" name="dalsi-nazev" id="ti2" /> <input type="text" name="a-dalsi" id="ti3" /> <input type="submit" value="submit" /> </form> Jak teď docílím toho, aby ty alerty vyskočili jen jednou?? |
||
habendorf Profil |
#7 · Zasláno: 3. 12. 2004, 16:13:50
Místo neustálého alertování měň nějakou proměnou - např. deklaruj shoda = true, pokud se shodují, neděje se nic, pokud se neshodují, tak shoda=false. A na konci if shoda alert "shodují se" else alert "neshodují se" (píšu zjednodušeně, myšlenka je snad jasná)
|
||
Fred Profil |
#8 · Zasláno: 3. 12. 2004, 16:24:26
Díky
|
||
habendorf Profil |
#9 · Zasláno: 3. 12. 2004, 16:33:45
Fred Promiň, celé je to přesně obráceně. Pokud nerozumíš, ozvi se.
|
||
Fred Profil |
#10 · Zasláno: 3. 12. 2004, 16:40:28
Budu to zkoušet, to je tak když se něco učím odprostředka, pak mi bohužel občas chybí základy
|
||
Fred Profil |
#11 · Zasláno: 3. 12. 2004, 22:14:26
jestli jsem to pochopil správně, tak jsem pokročil sem, jen nevím jak ošetřit, aby se ty inputy nesmazaly, když nejsou v pořádku??
function kontrola(){ pocet_poli = 3; var shoda; for(i=1;i<pocet_poli;i++){ for(j=i+1;j<=pocet_poli;j++){ if(document.getElementById('ti'+i).value==''||document.getElementById( 'ti'+j).value==''){ shoda=true; } else if(document.getElementById('ti'+i).value==document.getElementById('ti' +j).value){ shoda=true; } else shoda=false; if(shoda==false){ alert('v pořádku') return true; }}}} |
||
habendorf Profil |
#12 · Zasláno: 3. 12. 2004, 22:47:17 · Upravil/a: habendorf
Možná by šly ty inputy uložit do nějakých proměných a pak je znovu doplnit do formuláře. Pokud by těch inputů bylo víc, asi bych využil pole (array).
A nezlob se na mě, ale ten script je dost nesmyslnej. Třeba tohle if(document.getElementById('ti'+i).value==''||document.getElementById( 'ti'+j).value=='') je kravina. A zavedl bych dvě proměnné - jednu pro výsledek testování "prázdnosti" a druhou pro výsledek testování shody. Napsal bych ti to, ale padá mi hlava, mám spánkovej dluh (takže možná píšu kraviny) :o) |
||
Fred Profil |
#13 · Zasláno: 3. 12. 2004, 23:06:11
...||... - Je kravina, no jo taky jsem si říkal, že je to to samý. Dík za postrčení na správnou cestu
|
||
Časová prodleva: 19 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0