Autor Zpráva
Fisak
Profil
Dobrý den. Používám skript JScolor což do formulářů vloží barvu jaká je ve formuláři zadaná a po najetí se zobrazí takový dynamický měnič barvy. Jenže v mém skriptu to funguje bohužel jen po prvním načtení nikoliv po změně selectu viz.

<script type='text/javascript' src='./../../../js/plugins/jscolor/jscolor.js'></script>
<form method="post" name="template_creator">
<select name="template_laytout">
<option value="3row">Třísloupcový</option>
<option value="2rowR">Dvousloupcový pravý</option>
<option value="2rowL">Dvousloupcový levý</option>
<option value="banner">Bannerový</option>
</select>
<div id='show_inputs'></div>
<script type='text/javascript'> // script je pod form, aby zajištoval plynulí chod
        select_menu = document.template_creator.template_laytout; // zajištění selectoru jako proměnné
         max = select_menu.options[select_menu.selectedIndex].value;
if(max == '3row') inputs = "<br>Vzhled stránky<br><table><tr><td>Barva pozadí stránky:</td><td> #<input name='body_bg_color' type='text' class='color' value='FFFFFF' size='7' /></td></tr></table>";
if(max == '2rowR') inputs = "<br>Vzhled stránky<br><table><tr><td>Barva pozadí stránky:</td><td> #<input name='body_bg_color' type='text' class='color' value='FFFFFF' size='7' /></td></tr></table>";
if(max == '2rowL') inputs = "<br>Vzhled stránky<br><table><tr><td>Barva pozadí stránky:</td><td> #<input name='body_bg_color' type='text' class='color' value='FFFFFF' size='7' /></td></tr></table>";
if(max == 'banner') inputs = "<br>Vzhled stránky<br><table><tr><td>Barva pozadí stránky:</td><td> #<input name='body_bg_color' type='text' class='color' value='FFFFFF' size='7' /></td></tr></table>";
document.getElementById('show_inputs').innerHTML = inputs; // vložení obsahu proměnné do div#show_inputs
         
        select_menu.onclick = function() { // funkce která reaguje na změnu v selectoru
             max = this.options[this.selectedIndex].value; // zjistění čísla v parametru value
            inputs = ""; // zavedení proměnné inputs
if(max == '3row') inputs = "<br>Vzhled stránky<br><table><tr><td>Barva pozadí stránky:</td><td> #<input name='body_bg_color' type='text' class='color' value='FFFFFF' size='7' /></td></tr></table>";
if(max == '2rowR') inputs = "<br>Vzhled stránky<br><table><tr><td>Barva pozadí stránky:</td><td> #<input name='body_bg_color' type='text' class='color' value='FFFFFF' size='7' /></td></tr></table>";
if(max == '2rowL') inputs = "<br>Vzhled stránky<br><table><tr><td>Barva pozadí stránky:</td><td> #<input name='body_bg_color' type='text' class='color' value='FFFFFF' size='7' /></td></tr></table>";
if(max == 'banner') inputs = "<br>Vzhled stránky<br><table><tr><td>Barva pozadí stránky:</td><td> #<input name='body_bg_color' type='text' class='color' value='FFFFFF' size='7' /></td></tr></table>";
document.getElementById('show_inputs').innerHTML = inputs; // vložení obsahu proměnné do div#show_inputs
         }
</form>
nevěděl by prosím někdo v čem by to mohlo být? Předem děkuji za odpovědi.
preca1
Profil
Zdravim,
nějakej logickej problém sem nenašel, ale máš tam pár "chybek", který na tý stránce můžou dělat neplechu.
Na selectu bych odchytával událost change a ne click (viz Vypsat text podle výběru z <option>), i když podle mýho testu by to mělo fungovat i tak. Dál to vypadá, že používáš globální proměnný, to taky neni dobrej nápad.
Spíš bude lepší dodat odkaz na živou ukázku.
1Pupik1989
Profil
Psal mi na skypu. Problém byl v tom, že script "jscolor" odchytá všechny inputy s classname color. Takže logicky když je přidá, tak nemají přiřazené nic.

To s onchange jsem mu také řekl.

Měl by přiložit i ten script a výsledek, ale asi se tak nestane, jsou to dva dny.

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:

0