Autor Zpráva
Silencer
Profil
Prosím o pomoc pri disabled.
Mám tento script:
<script>
function pocetdnizobraz()
{document.getElementById("viacako").disabled=false;}
function pocetdniskryt()
{document.getElementById("viacako").disabled=true;}
</script>


Ďalej tento kód:
<select name="dni" size="1">
<optgroup label="Počet dní">
<option selected value="1 deň" onclick="pocetdniskryt()">1 deň</option>
<option value="2 dni" onclick="pocetdniskryt()">2 dni</option>

<option value="3 dni" onclick="pocetdniskryt()">3 dni</option>
<option value="4 dni" onclick="pocetdniskryt()">4 dni</option>
<option value="5 dní" onclick="pocetdniskryt()">5 dní</option>
<option value="Viac ako 5 dní" onclick="pocetdnizobraz()">Viac ako 5 dní</option>
<optgroup label="Obdobie">
<option value="víkend" onclick="pocetdniskryt()">víkend</option>
<option value="týždeň" onclick="pocetdniskryt()">týždeň</option>
<option value="mesiac" onclick="pocetdniskryt()">mesiac</option>
</select>&nbsp;&nbsp;&nbsp;
<input type="text" size="7" maxlength="3" name="presnedni" title="Zadajte presný počet dní" id="viacako" disabled>


Efekt je taký, že po zvolení položky Viac ako 5 dní sa aktivuje pole, ktoré je dovtedy zašedené.
Funguje to však iba vo FF, v IE to z nevysvetliteľných dôvodov nefunguje.

Skúšal som všetky možné varianty, prešiel som celý web jpw.cz, ale nič nepomohlo.
peta
Profil
co pise JS konzola v IE / FF / Opere?

tipl bych si, ze disabled se pise dissabled a nebo ,ze nenabyva true/false, nybrz disabled/(nic)
Bubák
Profil
tipl bych si, ze disabled se pise dissabled a nebo ,ze nenabyva true/false, nybrz disabled/(nic)
špatné tipy
http://msdn.microsoft.com/en-us/library/ms533732(VS.85).aspx
Chamurappi
Profil
Reaguji na Silencera:
Nedávno se to tu řešilo, Explorer nepodporuje onclick na <option>ech, nasaď onchange na <select>.
Silencer
Profil
Reagujem na Chamurappi:
Ďakujem, to dávnejšie riešenie mi pomohlo.

Ostáva ešte jeden posledný problém a síce ten, že potrebujem pri volaní funkcie zavolať niekoľko premenných:
function ukaz(form,meno,ktoreid,hladaj)
{
if (form.meno.value==hladaj) {
document.getElementById(ktoreid).style.display="inline"}
else {
document.getElementById(ktoreid).style.display="none"}
}

Select následne volám takto:
<select name="dni" size="1" onchange="ukaz(this.form,this.name,'viacako','Viac ako 5 dní')">

A samotné políčko, ktoré sa má alebo nemá zobrazovať:
<span id="viacako" style="display:none;"> 
<input type="text" size="1" maxlength="3" name="presnedni" title="Zadajte presný počet dní"></span>


Všetko funguje ako iba vtedy, keď z volaných premenných vyhodím premennú meno.
Keď ju nahradím priamo názvom dni, tak je všetko OK.
Keďže ja budem ten script volať viac krát, bolo by vhodné to použiť ako premennú.

Je to vôbec možné?
los
Profil *
Keď chceš použiť meno ako premennú, tak namiesto prístupu pomocou bodky použiješ hranaté zátvorky:
if (form[meno].value == hladaj)

Prípadne to môžeš ešte zjednodušiť tak, že si tam budeš posielať priamo ten select:
onchange="ukaz(this,'viacako','Viac ako 5 dní')"
Funkcia ukaz by potom vyzerala takto (netestované):
function ukaz(select, id, hladaj) {
  document.getElementById(id).style.display = select.value == hladaj ? "" : "none";
}
Silencer
Profil
Keď chceš použiť meno ako premennú, tak namiesto prístupu pomocou bodky použiješ hranaté zátvorky:
if (form[meno].value == hladaj)

los
Ďakujem, pomohlo to s tými hranatými zatvorkami.

To zjednodušenie však nefunguje, posielajo to nulovú hodnotu (aspoň tak hlási chybu javascript).

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: