Autor Zpráva
Pavka
Profil
Ahoj,
potřeboval bych vytvořit modální dialog, který by obsahoval formulář s několika checkboxy a po potvrzení by hodnoty těch checkboxů nastavil prvkům hidden oknu ze kterého byl volán. Víte jak na to?
PerToon
Profil
Ještě jednou a podrobně a jednoduše, prosím.
Chceš vybráním checkboxu nastavit něčemu hidden?
Radek Hrabůvka
Profil
Pavka Modální dialog umí jen IE, to není dobré řešení.
OBr
Profil
Modální dialog umí i Firefox.

<script type="text/javascript">
function createModal(winUrl)
{
if (window.showModalDialog)
{
window.showModalDialog(winUrl, "_modalWin","width=300,height=450")
}
else
{
window.open(winUrl, "_modalWin","width=300,height=450,modal=yes");
}
}
</script>
<a href="javascript:createModal('http://www.mozilla.org/docs/dom/domref/dom_window_ref76.html')">open</a>
OBr
Profil
Pokoušel jsem se použít showModalDialog() u IE, ale nevím jak mu říci, do jakého okna má hodnotu předávat. Tak jsem použil jinou funkci: showModelessDialog(). Mohlo by to vypadat třeba takhle?

hlavni.htm


<script type="text/javascript">
function createModal(winUrl)
{
if (window.showModelessDialog)
{
modalniOkno=window.showModelessDialog(winUrl, "modalWin","width=300,height=250")
modalniOkno.opener=self;
}
else
{
modalniOkno=window.open(winUrl, "_modalWin","width=300,height=250,modal=yes");
modalniOkno.opener=self;
}
}
</script>
<input type="text" id="prvek">
<a href="#" onclick="createModal('dialog.htm');return false;">Vyplnit</a>

dialog.htm

<script type="text/javascript">
function predejVstup()
{
opener.document.getElementById("prvek").value=document.getElementById ("zadej").value;
}
</script>
<input type="text" id="zadej" value="nejaky text">
<a href="#" onclick="predejVstup();window.close();">Zadejte</a>
Radek Hrabůvka
Profil
OBr Díky, otestoval jsem, funguje v IE, FF, Opeře. Yuhů má na stránce Modální dialog příklad, který funguje jen v IE.
OBr
Profil
No, v Opere to funguje, ale neni to modalni. Ale jestli vam to nevadi tak je to fajn.
Pavka
Profil
Promiňte, že jsem nereagoval, ale byl jsem mimo net.

Takže pokusím se to vysvětlit znovu...
Nemusí to být ani modální dialog, ale prostě potřebuju otevřít okno ve kterém bude několik checkboxů.
<input type="checkbox" name="per_1"....>
...
<input type="checkbox" name="per_27"....>

Při potvrzení formuláře se okno zavře a v původním oknu (odtud byl dialog otevřen) se nastaví všem prvkům hidden označených jako per_1 - per_27 nastavena hodnota podle toho, jestli byl checkbox zaškrknut (1) nebo nikoliv (0).
habendorf
Profil
Při potvrzení formuláře se okno zavře a v původním oknu (odtud byl dialog otevřen) se nastaví všem prvkům hidden označených jako per_1 - per_27 nastavena hodnota podle toho, jestli byl checkbox zaškrknut (1) nebo nikoliv (0).

A která část z toho ti není jasná?
Pavka
Profil
Jak z jednoho okna dostat hodnoty formulářových položek a nastavit je položkám v jiném oknu.

Ed.: Aha...teď jsem si všiml toho "opener", zítra to vyzkouším.
Pavka
Profil
Ok, takže jsem to vyzkoušel, ale nějak mi to nefunguje. Všechno ok, jen se mi nedaří nastavit ty hodnoty :(

Mám nastavené id per_2 - per_27.

function set_permissions()
{
opener.document.getElementById("per_2").value=document.getElementById ("per_2").value;
opener.document.getElementById("per_3").value=document.getElementById ("per_3").value;
opener.document.getElementById("per_4").value=document.getElementById ("per_4").value;
opener.document.getElementById("per_5").value=document.getElementById ("per_5").value;
opener.document.getElementById("per_6").value=document.getElementById ("per_6").value;
opener.document.getElementById("per_7").value=document.getElementById ("per_7").value;
opener.document.getElementById("per_8").value=document.getElementById ("per_8").value;
opener.document.getElementById("per_9").value=document.getElementById ("per_9").value;
opener.document.getElementById("per_10").value=document.getElementByI d("per_10").value;
opener.document.getElementById("per_11").value=document.getElementByI d("per_11").value;
opener.document.getElementById("per_12").value=document.getElementByI d("per_12").value;
opener.document.getElementById("per_13").value=document.getElementByI d("per_13").value;
opener.document.getElementById("per_14").value=document.getElementByI d("per_14").value;
opener.document.getElementById("per_15").value=document.getElementByI d("per_15").value;
opener.document.getElementById("per_16").value=document.getElementByI d("per_16").value;
opener.document.getElementById("per_17").value=document.getElementByI d("per_17").value;
opener.document.getElementById("per_18").value=document.getElementByI d("per_18").value;
opener.document.getElementById("per_19").value=document.getElementByI d("per_19").value;
opener.document.getElementById("per_20").value=document.getElementByI d("per_20").value;
opener.document.getElementById("per_21").value=document.getElementByI d("per_21").value;
opener.document.getElementById("per_22").value=document.getElementByI d("per_22").value;
opener.document.getElementById("per_23").value=document.getElementByI d("per_23").value;
opener.document.getElementById("per_24").value=document.getElementByI d("per_24").value;
opener.document.getElementById("per_25").value=document.getElementByI d("per_25").value;
opener.document.getElementById("per_26").value=document.getElementByI d("per_26").value;
opener.document.getElementById("per_27").value=document.getElementByI d("per_27").value;
}

při kliknutí na tlačítko volám funkce: set_permissions();window.close();

ale ty hodnoty mi to nenastavuje :(
Pavka
Profil
Ať se snažím, jak se snažím, tak mi to nejde. Nevíte někdo v čem je chyba?
Fred
Profil
Pavka Dej sem odkaz, tohle je k ničemu. BTW máš to zbytečně dlouhý, checkbox má defaultní hodnotu on, nevíme jak ověřuješ stav zaškrtnutí checkboxu, nevíme jestli tam máš id (viz. příspěvek nad Habendorfovým) atd. Může to fakt být spousta věcí.
Pavka
Profil
Well...

soubor s checkboxy obsahuje (je to php script, ale funguje v pohodě, hodím sem jen to co se týká tohoto problému):

echo("<script language=\"javascript\" type=\"text/javascript\" src=\"../scripts/permissions.js\"></script>");
echo("<form>");
echo("<table class=\"admin_permissions_table\">");
echo("<tr><td class=\"admin_permissions_left\">" . $permission . ":</td><td class=\"admin_permissions_right\"><input type=\"checkbox\" name=\"per_" . $i . "\" value=\"" . $i . "\"" . $checked . " id=\"per_md_" . $i . "\"></td></tr>\n");
echo("<tr><td></td><td><input type=\"button\" name=\"submit\" value=\"" . ADMIN_PERMISSION_SET . "\" onclick=\"set_permissions();window.close();\"></td></tr>\n");
echo("</table>");
echo("</form>");

soubor s hidden prvky (je to php script, ale funguje v pohodě, hodím sem jen to co se týká tohoto problému):

echo("<script language=\"javascript\" type=\"text/javascript\" src=\"./source/admin/scripts/permissions.js\"></script>");
echo("<input type=\"hidden\" name=\"per_" . $i . "\" value=\"0\" id=\"per_" . $i . "\">\n");

soubor s javascriptem:

function permissions(lang,style)
{
if (window.showModelessDialog)
{
modalwindow=window.showModelessDialog("./source/admin/permissions/pe rmissions.php?lang="+lang+"&style="+style, "modalWin","width=500,height=700,resizable=yes,scrollbars=yes")
modalwindow.opener=self;
} else {
modalwindow=window.open("./source/admin/permissions/permissions.php? lang="+lang+"&style="+style, "_modalWin","width=500,height=700,resizable=yes,scrollbars=yes,modal=y es");
modalwindow.opener=self;
}
}

function set_permissions()
{
opener.document.getElementById("per_2").value=document.getElementById ("per_md_2").value;
opener.document.getElementById("per_3").value=document.getElementById ("per_md_3").value;
opener.document.getElementById("per_4").value=document.getElementById ("per_md_4").value;
opener.document.getElementById("per_5").value=document.getElementById ("per_md_5").value;
opener.document.getElementById("per_6").value=document.getElementById ("per_md_6").value;
opener.document.getElementById("per_7").value=document.getElementById ("per_md_7").value;
opener.document.getElementById("per_8").value=document.getElementById ("per_md_8").value;
opener.document.getElementById("per_9").value=document.getElementById ("per_md_9").value;
opener.document.getElementById("per_10").value=document.getElementByI d("per_md_10").value;
opener.document.getElementById("per_11").value=document.getElementByI d("per_md_11").value;
opener.document.getElementById("per_12").value=document.getElementByI d("per_md_12").value;
opener.document.getElementById("per_13").value=document.getElementByI d("per_md_13").value;
opener.document.getElementById("per_14").value=document.getElementByI d("per_md_14").value;
opener.document.getElementById("per_15").value=document.getElementByI d("per_md_15").value;
opener.document.getElementById("per_16").value=document.getElementByI d("per_md_16").value;
opener.document.getElementById("per_17").value=document.getElementByI d("per_md_17").value;
opener.document.getElementById("per_18").value=document.getElementByI d("per_md_18").value;
opener.document.getElementById("per_19").value=document.getElementByI d("per_md_19").value;
opener.document.getElementById("per_20").value=document.getElementByI d("per_md_20").value;
opener.document.getElementById("per_21").value=document.getElementByI d("per_md_21").value;
opener.document.getElementById("per_22").value=document.getElementByI d("per_md_22").value;
opener.document.getElementById("per_23").value=document.getElementByI d("per_md_23").value;
opener.document.getElementById("per_24").value=document.getElementByI d("per_md_24").value;
opener.document.getElementById("per_25").value=document.getElementByI d("per_md_25").value;
opener.document.getElementById("per_26").value=document.getElementByI d("per_md_26").value;
opener.document.getElementById("per_27").value=document.getElementByI d("per_md_27").value;
}
Chamurappi
Profil
Reaguji na Pavku:
Nenastavuj vlastnost value, ale checked.
Pavka
Profil
Eh, proč ne? Když je pole zaškrtlé, tak odešle hodnotu, jinak neodešle nic.

A jestli jsi myslel v tom javascriptu, tak mi to nefungovalo ani s checked.
Fred
Profil
Bude to delší, takže se omlouvám předem. Snad to fórum moc nerozbije, nejsem doma, tak to nemůžu nikam poslat, nepamatuji si hesla.

1/ okno co to otvírá, název libovolný

<script type="text/javascript">
<!--
function pop(){window.open("pop.html","okno","");}
window.onload=function(){if(document.getElementById && document.createElement){pop();}}
//-->
</script>
</head>
<body>
<div id="oblast">
<input type="checkbox" id="per_2" />
<input type="checkbox" id="per_3" />
<input type="checkbox" id="per_4" />
<input type="checkbox" id="per_5" />
<input type="checkbox" id="per_6" />
<input type="checkbox" id="per_7" />
<input type="checkbox" id="per_8" />
<input type="checkbox" id="per_9" />
<input type="checkbox" id="per_10" />
<input type="checkbox" id="per_11" />
<input type="checkbox" id="per_12" />
<input type="checkbox" id="per_13" />
<input type="checkbox" id="per_14" />
<input type="checkbox" id="per_15" />
<input type="checkbox" id="per_16" />
<input type="checkbox" id="per_17" />
<input type="checkbox" id="per_18" />
<input type="checkbox" id="per_19" />
<input type="checkbox" id="per_20" />
<input type="checkbox" id="per_21" />
<input type="checkbox" id="per_22" />
<input type="checkbox" id="per_23" />
<input type="checkbox" id="per_24" />
<input type="checkbox" id="per_25" />
<input type="checkbox" id="per_26" />
<input type="checkbox" id="per_27" />
</div>

2/okno co to posílá do toho opneru v tomhle případě název pop.html

<script type="text/javascript">
<!--
function posliDoOpeneru(){
for(var i=2;i<28;i++){
opener.document.getElementById("per_"+i).value=document.getElementById ("per_"+i).value;
if(document.getElementById("per_"+i).value==1){opener.document.getElem entById("per_"+i).setAttribute('checked','checked')}
}}
function nastavHodnotu(){
var obl=document.getElementById('oblast');
var co=obl.getElementsByTagName('input');
for(var i=0;i<co.length;i++){
if(co[i].getAttribute('type')=='checkbox'){
co[i].value=0;
co[i].onclick=function(){
if(this.checked){this.value='1';}
else {this.value='0';}
}
}
}
}
window.onload=function(){if(document.getElementById && document.createElement){nastavHodnotu();}}
window.onunload=function(){if(document.getElementById && document.createElement){posliDoOpeneru();}}
//-->
</script>
</head>
<body>
<div id="oblast">
<input type="checkbox" id="per_2" />
<input type="checkbox" id="per_3" />
<input type="checkbox" id="per_4" />
<input type="checkbox" id="per_5" />
<input type="checkbox" id="per_6" />
<input type="checkbox" id="per_7" />
<input type="checkbox" id="per_8" />
<input type="checkbox" id="per_9" />
<input type="checkbox" id="per_10" />
<input type="checkbox" id="per_11" />
<input type="checkbox" id="per_12" />
<input type="checkbox" id="per_13" />
<input type="checkbox" id="per_14" />
<input type="checkbox" id="per_15" />
<input type="checkbox" id="per_16" />
<input type="checkbox" id="per_17" />
<input type="checkbox" id="per_18" />
<input type="checkbox" id="per_19" />
<input type="checkbox" id="per_20" />
<input type="checkbox" id="per_21" />
<input type="checkbox" id="per_22" />
<input type="checkbox" id="per_23" />
<input type="checkbox" id="per_24" />
<input type="checkbox" id="per_25" />
<input type="checkbox" id="per_26" />
<input type="checkbox" id="per_27" />
</div>

3/funkčnost ověříš tak, že po odklikání nějakých checkboxů v tom popupu, napíšeš do adresního řádku toho openeru bookmarklet javascript:document.write(document.documentElement.innerHTML); document.close(); , to vypíše generovaný zdroj a necháš si normálně zobrazit zdrojový kód. Ty co jsi odškrtal budou mít navíc attribut checked="checked" a nastavenou hodnotu value="1" .
4/testováno IE6 a Firefox funguje to.
Fred
Profil
tady se to nemělo zlomit
if(document.getElementById("per_"+i).value==1){opener.document.getElem entById("per_"+i).setAttribute('checked','checked')}

jinak to vypadá v pořádku.
Fred
Profil
Tak jsem chvilku doma a uploadoval jsem ti to sem http://xy.wz.cz/spoluprace-oken/pop.html . Funguje to v IE5+, Gecko jádro, v Opeře to netuším proč nejde, ale nemám teď čas, jedině zítra.
Fred
Profil
Fred To mi nikdo nemůže říct Frede nefunguje to! Dal jsem se odkaz na to otevírané okno, to je pak těžký. Mělo to být tady http://xy.wz.cz/spoluprace-oken/index.html
honza civin
Profil
Ahoj. Nevite proc nefunguje TreeView v okne showModalDialog??
Dik
Toto téma je uzamčeno. Odpověď nelze zaslat.

0