SELECT+OPTION OnChange event (problem)

Programovacie jazyky, rady, poradňa...
Mek
Addict
Addict
Používateľov profilový obrázok
Príspevky: 4661
Registrovaný: 23 mar 2005, 23:00
Bydlisko: ZA <-> TN
Kontaktovať používateľa:

SELECT+OPTION OnChange event (problem)

Príspevok od používateľa Mek »

Zdravim, potrebujem pomoct s takou drobnostou. Najprv sem dam kod, ktory mam:

Kód: Vybrať všetko

<form name="adminform" action="">
	<select name="sekcia" size="1" onchange="javascript:zmena();">
		<option value="0" id="zvolsekciu">--------------------------- Zvoľte sekciu ---------------------------</option>
					<option value="1" class="striedanie" id="1" name="1">Internáty Veľký Diel > Základné informácie</option>

					<option value="2" class="striedanie" id="2" name="2">Internáty Veľký Diel > Cenník ubytovania</option>
					<option value="3" class="striedanie" id="3" name="1">Internáty Veľký Diel > Kontakt</option>
					<option value="4" class="striedanie" id="4" name="2">Internáty Veľký Diel > Ubytovací poriadok</option>
							<option value="5" id="5" name="1">Internáty Hliny > Základné informácie</option>

					<option value="6" id="6" name="2">Internáty Hliny > Cenník ubytovania</option>
					<option value="7" id="7" name="1">Internáty Hliny > Kontakt</option>
					<option value="8" id="8" name="2">Internáty Hliny > Ubytovací poriadok</option>
							<option value="9" class="striedanie" id="9" name="1">Stravovanie > Základné informácie</option>

					<option value="10" class="striedanie" id="10" name="3">Stravovanie > Jedálny lístok a objednávka cez internet</option>
		</select>
</form>
a teraz fcia v javascripte:

Kód: Vybrať všetko

function zmena()
{
	
	if (document.getElementById(document.forms.adminform.sekcia.value;).name=='1')
	{
	alert('1');
	} else {
	alert('2');
	}
}
V zavislosti na tom, ktora polozka (Option) je v Selecte vybrana, potrebujem urobit urcite zmeny na stranke (to zabezpeci funkcia zmena). Tieto zmeny na stranke budu tri - a to v zavislosti od toho, ci bude mat terajsia vybrata polozka v poli name hodnotu 1, 2, alebo 3.
Problem je, ze takto ako som to spravil, sa vzdy spusti kod alert('2'), ako keby to atribut "name" ignorovalo. Ako sa teda k tomuto atributu mam dostat, vie niekto pls? (za funkcne riesenie odmena v podobe k+ neminie) :wink:

//edit: skaredo to ten kod pozalamovalo, ale co sa da robit...)
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Príspevok od používateľa audiotrack »

máš tam bodkočiarku ktorá tam nemá čo robiť

Kód: Vybrať všetko

if (document.getElementById(document.forms.adminform.sekcia.value).name=='1') 
Mek
Addict
Addict
Používateľov profilový obrázok
Príspevky: 4661
Registrovaný: 23 mar 2005, 23:00
Bydlisko: ZA <-> TN
Kontaktovať používateľa:

Príspevok od používateľa Mek »

:o no, mas pravdu, dik, som na to vcera cumel jak puk a nie a nie si to vsimnut...
bodkociarku som odstranil, ale nepomohlo to, sprava sa to stale rovnako.
nejake dalsie napady? :(
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Príspevok od používateľa audiotrack »

potom máš chybu niekde inde. Zkopíroval som si to, a ide mi to v pohode.. tu ti posielam to čo som testoval:

Kód: Vybrať všetko

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <meta http-equiv="content-type" content="text/html; charset=windows-1250">
    <meta name="generator" content="PSPad editor, www.pspad.com">
    <title>
    </title>
<script language="javascript" type="text/javascript">
  function zmena()
    {
      if (document.getElementById(document.forms.adminform.sekcia.value).name=='1')
      {
        alert('1');
      } else {
        alert('2');
      }
    }
</script>
  </head>
  <body>
    <form name="adminform" action="">
      <select name="sekcia" size="1" onchange="zmena()">
        <option value="0" id="zvolsekciu"> --------------------------- Zvoľte sekciu ---------------------------
        </option>
        <option value="1" class="striedanie" id="1" name="1"> Internáty Veľký Diel > Základné informácie
        </option>
        <option value="2" class="striedanie" id="2" name="2"> Internáty Veľký Diel > Cenník ubytovania
        </option>
        <option value="3" class="striedanie" id="3" name="1"> Internáty Veľký Diel > Kontakt
        </option>
        <option value="4" class="striedanie" id="4" name="2"> Internáty Veľký Diel > Ubytovací poriadok
        </option>
        <option value="5" id="5" name="1"> Internáty Hliny > Základné informácie
        </option>
        <option value="6" id="6" name="2"> Internáty Hliny > Cenník ubytovania
        </option>
        <option value="7" id="7" name="1"> Internáty Hliny > Kontakt
        </option>
        <option value="8" id="8" name="2"> Internáty Hliny > Ubytovací poriadok
        </option>
        <option value="9" class="striedanie" id="9" name="1"> Stravovanie > Základné informácie
        </option>
        <option value="10" class="striedanie" id="10" name="3"> Stravovanie > Jedálny lístok a objednávka cez internet
        </option>
      </select>
    </form>
  </body>
</html>
Mek
Addict
Addict
Používateľov profilový obrázok
Príspevky: 4661
Registrovaný: 23 mar 2005, 23:00
Bydlisko: ZA <-> TN
Kontaktovať používateľa:

Príspevok od používateľa Mek »

ha. pravdu mas, funguje to, ale bohuzial len v IE :cry:
(skusal som operu aj firefox a tam to blblo)
//edit: v tychto dvoch prehliadacoch je hodnota document.getElementById(document.forms.adminform.sekcia.value).name vraj undefined (dal som si ju vypisat v policku alert) :cry:
Mek
Addict
Addict
Používateľov profilový obrázok
Príspevky: 4661
Registrovaný: 23 mar 2005, 23:00
Bydlisko: ZA <-> TN
Kontaktovať používateľa:

Príspevok od používateľa Mek »

... PROBLEM SOLVED! ... :D
asi tak, ze namiesto do atributu name som ukladal tie data do atributu class a potom som v javascripte do tohto atributu pristupoval pomocou className.
Viem, ze takto by sa to nemalo, kedze vlastnost class je urcena na nieco ine, ale kedze je to jedina moznost, koledovali si o to :)
audiotrackovi posielam kaplus za ochotu :wink:
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Príspevok od používateľa audiotrack »

skús toto (ten prístup je podľa mňa prehladnejší a nemusíš šaškovať s class):
Skúšal som to v IE, Firefoxe, a Opere a všade mi to fungovalo

Kód: Vybrať všetko

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <meta http-equiv="content-type" content="text/html; charset=windows-1250">
    <meta name="generator" content="PSPad editor, www.pspad.com">
    <title>
    </title>
<script language="javascript" type="text/javascript">
  function zmena()
    {
      if (document.forms['adminform'].sekcia.value=="1")
      {
        alert('1');
      } else {
        alert('2');
      }
    }
</script>
  </head>
  <body>
    <form name="adminform" action="">
      <select name="sekcia" size="1" onchange="zmena()">
        <option value="0" id="zvolsekciu"> --------------------------- Zvoľte sekciu ---------------------------
        </option>
        <option value="1" class="striedanie" id="1" name="1"> Internáty Veľký Diel > Základné informácie
        </option>
        <option value="2" class="striedanie" id="2" name="2"> Internáty Veľký Diel > Cenník ubytovania
        </option>
        <option value="3" class="striedanie" id="3" name="1"> Internáty Veľký Diel > Kontakt
        </option>
        <option value="4" class="striedanie" id="4" name="2"> Internáty Veľký Diel > Ubytovací poriadok
        </option>
        <option value="5" id="5" name="1"> Internáty Hliny > Základné informácie
        </option>
        <option value="6" id="6" name="2"> Internáty Hliny > Cenník ubytovania
        </option>
        <option value="7" id="7" name="1"> Internáty Hliny > Kontakt
        </option>
        <option value="8" id="8" name="2"> Internáty Hliny > Ubytovací poriadok
        </option>
        <option value="9" class="striedanie" id="9" name="1"> Stravovanie > Základné informácie
        </option>
        <option value="10" class="striedanie" id="10" name="3"> Stravovanie > Jedálny lístok a objednávka cez internet
        </option>
      </select>
    </form>
  </body>
</html>
Mek
Addict
Addict
Používateľov profilový obrázok
Príspevky: 4661
Registrovaný: 23 mar 2005, 23:00
Bydlisko: ZA <-> TN
Kontaktovať používateľa:

Príspevok od používateľa Mek »

OK ale tento tvoj kod mi vypisuje alert 1 pre prvu polozku a alert 2 pre vsetky ostatne polozky. Aj viem preco - lebo value selectu je 1 len pri prvej polozke, pri ostatnych je ina.
Nezabudol si tam nieco zmenit? :?
(ale to je jedno, uz mi to funguje mojim sposobom) :wink:
mastermind
VIP
VIP
Používateľov profilový obrázok
Príspevky: 4810
Registrovaný: 09 feb 2005, 13:17

Príspevok od používateľa mastermind »

toto ju je uplny nonsens document.getElementById(document.forms.adminform.sekcia.value).name
metoda getElementById() vracia element ktory ma id take ako je specifikovane v prvom parametri.
je to zbytocne kopmlikovane. Preco zistujes meno elementu ktory ma rovnake id ako je vybrate v selecte? preco len nezoberies hodnotu ktora je vybrata v selecte? je to ovela efektivnejsie

no ale aby som aj povedal preco to nejde. FF a Opera nevedia pracovat s ID ktore zacinaju cislovkou
Mek
Addict
Addict
Používateľov profilový obrázok
Príspevky: 4661
Registrovaný: 23 mar 2005, 23:00
Bydlisko: ZA <-> TN
Kontaktovať používateľa:

Príspevok od používateľa Mek »

hej hej to s tym zaciatkom cislovkou som potom opravil, ked mi validator vyhodil, ze to je neplatny nazov.
a to, preco to robim tak ako to robim je, ze potrebujem z toho selectu vycucnut dve hodnoty, a nie len jednu. ale ako hovorim, uz to mam opravene :wink: tema moze byt lock.
Napísať odpoveď