Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem Chyba v JavaScriptovém kódu

Ahoj, mohl by někdo najít chybu někde v tomto kódu ?

<script ..... >
function zmena(s) {
    var t=s.options[s.selectedIndex].value;		
    if (t=="nova") document.getElementById('div1').style.display="block";
}
</script>

<form name="f1"....>
    <SELECT name="skupina" onChange="zmena(this)">
    ....
    ....
<div id="div1" style="display: none;"> <input type="text" name="t1"> </div>
</form>

Určitě tam někde je, jenže nevim kde, prosím pomozte mi ... Díky všem.

Jsou zobrazeny jen nové odpovědi. Zobrazit všechny
Předmět Autor Datum
Jo. Rozepiš se podrobněji. Nechápu co myslíš a jsem unavený (tam to s tím PHP). Protože pokud si dob… nový
Flash_Gordon 05.01.2007 21:34
Flash_Gordon
v tom kodu neni chyba,. jen sem se chtel zeptat na toto: jesli ze zaslaneho parametru THIS ve funkc… nový
Michalis 05.01.2007 21:39
Michalis
Nevím co chceš udělat takže nakonec můžeš narazit velmi hrubě na nějaký zádrhel (viz. moje předchozí… nový
Flash_Gordon 05.01.2007 21:53
Flash_Gordon
Ak si posielaš do funkcie select, tak k názvu formulára sa dostaneš prostredníctvom select.form.name… poslední
los 06.01.2007 15:23
los

Jo. Rozepiš se podrobněji. Nechápu co myslíš a jsem unavený (tam to s tím PHP).
Protože pokud si dobře pamatuji tak některé prohlížeče neposílají hodnoty jiných inputů než ty, které jsou v rámci
formuláře, který byl odeslán.

Co tím myslím ?

<form name='nejakyFormular' >
<input type='text' name='prvniInput' >
</form>

<form name='nejakyFormular2' > 
<input type='text' name='druhyInput' >
</form>

Pokud je odeslán formulář první, pak (tuším Internet Explorer !) neposílá obsah
prvků, které nejsou v rámci formuláře.
Tedy nic z formuláře2 (nejakyFormular2) se neodešle !

v tom kodu neni chyba,. jen sem se chtel zeptat na toto:

jesli ze zaslaneho parametru THIS ve funkcni zmena muzu nejak dostat nazev formulare ve kterem se dany select nachazi. Portoze na radku: if (t=="nova") document.getElementById('div1').style.display="blo ck"; potebuju dynamicky menit strind 'div1' a to takto: jednali se o nazev formulare f1, bude to div1, je-li nazev formulare f2, bude to div2 atd....
protoze na stance techto formularu muze byt X (generovane pres php) a nechci v kazdem cyklu vytvarek dynamicky novou JS funkci zmena1 potom zmena2 zmena3, kdyz se v dane fci bude menit jen ten jeden jiz zminovany strind 'div1' div2 atd...

Nevím co chceš udělat takže nakonec můžeš narazit velmi hrubě na nějaký zádrhel (viz. moje předchozí odpověď)
Co se týče toho formuláře můžeš zjistit o jaký se jedná buďto:

zmena(this.form.id) // předá funkci název identifikátoru
zmena(this.form.name) // Předá funkci jako parametr název formuláře.....

Toto bude funkce volana pri onchange selectboxu.....

:-)

Ak si posielaš do funkcie select, tak k názvu formulára sa dostaneš prostredníctvom select.form.name. K samotnému číslu sa dostaneš už jednoducho metódou substr.

Netestované, takže tam môžu byť chyby, ale je vidno princíp:

function zmena(s) {
    if (s.options[s.selectedIndex].value == "nova")
        document.getElementById("div" + s.form.name.substr(1)).style.display = "block";
}

50 formulárov na stránke? To je celkom dosť. Naozaj potrebuješ odosielať každý formulár na inú adresu?

Zpět do poradny Odpovědět na původní otázku Nahoru