Forum function nem kezeli jól a js-t

Forum function nem kezeli jól a js-t
2011-04-13T18:27:35+02:00
2011-04-13T18:53:47+02:00
2022-11-21T12:40:40+01:00
buzlee
Adott egy fórum, amibe js-el van megoldva a smájlik és a további bbcode bevitel. A problémám az lenne, hogy ez tökéletesen működik action alatt, de functionba már nem. A megjelenítendő táblát előhívja, és utánna semelyik javas gombra nem reagál.

A function nem működő része, ami előhívja a táblát:
print("<tr><td class=rowhead>Hozzászólás a $subject témába</td><td align=left style='padding: 0px'></td>"); textbbcode("compose","body",($quote?(("[quote=".htmlspecialchars($arr["usr"])."]".htmlspecialchars(unesc($arr["body"]))."
")):""));     print("<tr><td colspan=2 align=center><input type=submit class=btn value='".Mehet."'></td></tr>\n");     print("</td></tr>");

A javas bbcode function
function textbbcode($form,$text,$content="") { ?> <script language=javascript> var b_open = 0; var i_open = 0; var u_open = 0; var color_open = 0; var list_open = 0; var quote_open = 0; var html_open = 0; var myAgent = navigator.userAgent.toLowerCase(); var myVersion = parseInt(navigator.appVersion); var is_ie = ((myAgent.indexOf("msie") != -1) && (myAgent.indexOf("opera") == -1)); var is_nav = ((myAgent.indexOf('mozilla')!=-1) && (myAgent.indexOf('spoofer')==-1) && (myAgent.indexOf('compatible') == -1) && (myAgent.indexOf('opera')==-1) && (myAgent.indexOf('webtv') ==-1) && (myAgent.indexOf('hotjava')==-1)); var is_win = ((myAgent.indexOf("win")!=-1) || (myAgent.indexOf("16bit")!=-1)); var is_mac = (myAgent.indexOf("mac")!=-1); var bbtags = new Array(); function cstat() { var c = stacksize(bbtags); if ( (c < 1) || (c == null) ) {c = 0;} if ( ! bbtags[0] ) {c = 0;} document.<?=$form?>.tagcount.value = "Lezáratlan tagok bezárása"+c; } function stacksize(thearray) { for (i = 0; i < thearray.length; i++ ) { if ( (thearray[i] == "") || (thearray[i] == null) || (thearray == 'undefined') ) {return i;} } return thearray.length; } function pushstack(thearray, newval) { arraysize = stacksize(thearray); thearray[arraysize] = newval; } function popstackd(thearray) { arraysize = stacksize(thearray); theval = thearray[arraysize - 1]; return theval; } function popstack(thearray) { arraysize = stacksize(thearray); theval = thearray[arraysize - 1]; delete thearray[arraysize - 1]; return theval; } function closeall() { if (bbtags[0]) { while (bbtags[0]) { tagRemove = popstack(bbtags) if ( (tagRemove != 'color') ) { doInsert("[/"+tagRemove+"]", "", false); eval("document.<?=$form?>." + tagRemove + ".value = ' " + tagRemove + " '"); eval(tagRemove + "_open = 0"); } else { doInsert("[/"+tagRemove+"]", "", false); } cstat(); return; } } document.<?=$form?>.tagcount.value = "Lezáratlan tagok bezárása 0"; bbtags = new Array(); document.<?=$form?>.<?=$text?>.focus(); } function add_code(NewCode) { document.<?=$form?>.<?=$text?>.value += NewCode; document.<?=$form?>.<?=$text?>.focus(); } function alterfont(theval, thetag) { if (theval == 0) return; if(doInsert("[" + thetag + "=" + theval + "]", "[/" + thetag + "]", true)) pushstack(bbtags, thetag); document.<?=$form?>.color.selectedIndex = 0; cstat(); } function tag_url() { var FoundErrors = ''; var enterURL = prompt("Add meg az URT-t", "http://"); var enterTITLE = prompt("Add meg a címét", ""); if (!enterURL || enterURL=="") {FoundErrors += " " + "Meg kell adnod az URL-t";} if (!enterTITLE) {FoundErrors += " " + "Meg kell adnod a címet!";} if (FoundErrors) {alert("Error!"+FoundErrors);return;} doInsert(""+enterTITLE+"", "", false); } function tag_list() { var FoundErrors = ''; var enterTITLE = prompt("Add meg az elemet a listából. For end of the list, press 'cancel' or leave the next field empty ", ""); if (!enterTITLE) {FoundErrors += " " + "Add meg az elemet a listából. For end of the list, press 'cancel' or leave the next field empty";} if (FoundErrors) {alert("Hiba!"+FoundErrors);return;} doInsert("[*]"+enterTITLE+"", "", false); } function tag_image() { var FoundErrors = ''; var enterURL = prompt("Add meg a kép direkt linkjét URL", "http://"); if (!enterURL || enterURL=="http://") { alert("Hiba!"+"Meg kell adnod a direkt linket!"); return; } doInsert("[img]"+enterURL+"[/img]", "", false); } function tag_email() { var emailAddress = prompt("Add meg az E-mail címet", ""); if (!emailAddress) { alert("Hiba!"+"Meg kell adnod az E-mail címet"); return; } doInsert("[email]"+emailAddress+"[/email]", "", false); } function doInsert(ibTag, ibClsTag, isSingle) { var isClose = false; var obj_ta = document.<?=$form?>.<?=$text?>; if ( (myVersion >= 4) && is_ie && is_win) { if(obj_ta.isTextEdit){ obj_ta.focus(); var sel = document.selection; var rng = sel.createRange(); rng.colapse; if((sel.type == "Text" || sel.type == "None") && rng != null){ if(ibClsTag != "" && rng.text.length > 0) ibTag += rng.text + ibClsTag; else if(isSingle) isClose = true; rng.text = ibTag; } } else{ if(isSingle) isClose = true; obj_ta.value += ibTag; } } else { if(isSingle) isClose = true; obj_ta.value += ibTag; } obj_ta.focus(); // obj_ta.value = obj_ta.value.replace(/ /, " "); return isClose; } function em(theSmilie) { doInsert(" " + theSmilie + " ", "", false); } function winop() { windop = window.open("moresmiles.php?form=<?=$form?>&text=<?=$text?>","mywin","height=500,width=450,resizable=no,scrollbars=yes"); } function simpletag(thetag) { var tagOpen = eval(thetag + "_open"); if (tagOpen == 0) { if(doInsert("[" + thetag + "]", "[/" + thetag + "]", true)) { eval(thetag + "_open = 1"); eval("document.<?=$form?>." + thetag + ".value += '*'"); pushstack(bbtags, thetag); cstat(); } } else { lastindex = 0; for (i = 0; i < bbtags.length; i++ ) { if ( bbtags[i] == thetag ) { lastindex = i; } } while (bbtags[lastindex]) { tagRemove = popstack(bbtags); doInsert("[/" + tagRemove + "]", "", false) if ((tagRemove != 'COLOR') ){ eval("document.<?=$form?>." + tagRemove + ".value = ' " + tagRemove + " '"); eval(tagRemove + "_open = 0"); } } cstat(); } } </script> <? print("<table width=100% cellspacing=0 cellpadding=5>\n"); ?> <td colSpan="2"> <table cellSpacing="1" cellPadding="2"> <tr> <td class=embedded><input style="font-weight: bold;font-size:9px;" type=button name="b" value="B" onclick="javascript: simpletag('b')" /></td> <td class=embedded><input class="codebuttons" style="font-style: italic;font-size:10px;" type=button name="i" value="I" onclick="javascript: simpletag('i')" /></td> <td class=embedded><input class="codebuttons" style="text-decoration: underline;font-size:9px;" type=button name="u" value="U" onclick="javascript: simpletag('u')" /></td> <td class=embedded><input class="codebuttons" style="font-size:10px;" type=button name='url' value='Link' onclick='tag_url()' /> <td class=embedded><input class="codebuttons" style="font-size:10px;" type=button name="IMG" value="Kép" onclick="javascript: tag_image()" /></td> <td class=embedded><input type=button style="font-size:9px;" name="list" value="Lista" onclick="tag_list()" /></td> <td class=embedded><input class="codebuttons" style="font-size:10px;" type=button name="quote" value="Idéz" onclick="javascript: simpletag('quote')" /></td> <td class=embedded><input style="width:180" style="font-size:9px;" type=button onclick='javascript:closeall();' name='tagcount' value="Minden tag bezárása"> </table> </td> <table width=100% cellspacing=0 cellpadding=5> <td colSpan="2"> <table cellSpacing="1" cellPadding="2"> <tr> <td class=embedded><select name='color' class='codebuttons' onchange="alterfont(this.options[this.selectedIndex].value, 'color')"> <option value='0'>------ Szín -------</option> <option style="BACKGROUND-COLOR: black" value="Black">Fekete </option> <option style="BACKGROUND-COLOR: sienna" value="Sienna"> Sienna</option> <option style="BACKGROUND-COLOR: darkolivegreen" value="DarkOliveGreen"> Sötét oliva zöld</option> <option style="BACKGROUND-COLOR: darkgreen" value="DarkGreen"> Sötét zöld</option> <option style="BACKGROUND-COLOR: darkslateblue" value="DarkSlateBlue"> Sötét pala kék</option> <option style="BACKGROUND-COLOR: navy" value="Navy">Tengerkék </option> <option style="BACKGROUND-COLOR: indigo" value="Indigo"> Indigo</option> <option style="BACKGROUND-COLOR: darkslategray" value="DarkSlateGray"> Sötét pala szürke</option> <option style="BACKGROUND-COLOR: darkred" value="DarkRed"> Bordó</option> <option style="BACKGROUND-COLOR: darkorange" value="DarkOrange"> Sötét narancs</option> <option style="BACKGROUND-COLOR: olive" value="Olive">Oliva </option> <option style="BACKGROUND-COLOR: green" value="Green">Zöld </option> <option style="BACKGROUND-COLOR: teal" value="Teal">Teal </option> <option style="BACKGROUND-COLOR: blue" value="Blue">Kék </option> <option style="BACKGROUND-COLOR: slategray" value="SlateGray"> Pala szürke</option> <option style="BACKGROUND-COLOR: dimgray" value="DimGray"> Világos szürke</option> <option style="BACKGROUND-COLOR: red" value="Red">Piros </option> <option style="BACKGROUND-COLOR: sandybrown" value="SandyBrown"> Barna</option> <option style="BACKGROUND-COLOR: yellowgreen" value="YellowGreen"> Sárgászöld</option> <option style="BACKGROUND-COLOR: seagreen" value="SeaGreen"> Tenger zöld</option> <option style="BACKGROUND-COLOR: mediumturquoise" value="MediumTurquoise"> Égszinkék</option> <option style="BACKGROUND-COLOR: royalblue" value="RoyalBlue"> Király kék</option> <option style="BACKGROUND-COLOR: purple" value="Purple"> Bíbor</option> <option style="BACKGROUND-COLOR: gray" value="Gray">Gray </option> <option style="BACKGROUND-COLOR: magenta" value="Magenta"> Lila</option> <option style="BACKGROUND-COLOR: orange" value="Orange"> Narancssárga</option> <option style="BACKGROUND-COLOR: yellow" value="Yellow"> Sárga</option> <option style="BACKGROUND-COLOR: lime" value="Lime">Világos zöld </option> <option style="BACKGROUND-COLOR: cyan" value="Cyan">Cián kék </option> <option style="BACKGROUND-COLOR: deepskyblue" value="DeepSkyBlue"> Óceánkék</option> <option style="BACKGROUND-COLOR: darkorchid" value="DarkOrchid"> Sötét kosbor</option> <option style="BACKGROUND-COLOR: silver" value="Silver"> Ezüst</option> <option style="BACKGROUND-COLOR: pink" value="Pink">Pink </option> <option style="BACKGROUND-COLOR: wheat" value="Wheat">Wheat </option> <option style="BACKGROUND-COLOR: lemonchiffon" value="LemonChiffon"> Sárgás fehér</option> <option style="BACKGROUND-COLOR: palegreen" value="PaleGreen"> Pasztel zöld</option> <option style="BACKGROUND-COLOR: paleturquoise" value="PaleTurquoise"> Pasztel kék</option> <option style="BACKGROUND-COLOR: lightblue" value="LightBlue"> Világos kék</option> <option style="BACKGROUND-COLOR: plum" value="Plum">Szilva </option> <option style="BACKGROUND-COLOR: white" value="White">Fehér </option> </select> <td class=embedded> <select name='font' class='codebuttons' onchange="alterfont(this.options[this.selectedIndex].value, 'font')"> <option value='0'>--------- Betű típus ---------</option> <option value="Arial">Arial</option> <option value="Arial Black">Arial Black</option> <option value="Arial Narrow">Arial Narrow</option> <option value="Book Antiqua">Book Antiqua</option> <option value="Century Gothic">Century Gothic</option> <option value="Comic Sans MS">Comic Sans MS</option> <option value="Courier New">Courier New</option> <option value="Fixedsys">Fixedsys</option> <option value="Franklin Gothic Medium">Franklin Gothic Medium</option> <option value="Garamond">Garamond</option> <option value="Georgia">Georgia</option> <option value="Impact">Impact</option> <option value="Lucida Console">Lucida Console</option> <option value="Lucida Sans Unicode">Lucida Sans Unicode </option> <option value="Microsoft Sans Serif">Microsoft Sans Serif </option> <option value="Palatino Linotype">Palatino Linotype</option> <option value="System">System</option> <option value="
Mutasd a teljes hozzászólást!
Nah megvan a hiba:

E helyett
print("<form method=post action=?action=post>\n");

Ez kell
print("<form name=compose method=post action=?action=post>\n");
Logikába mostmár értem hogy miért, csak efelett átsiklott a szemem... Köszönöm azért a segítséget.
Mutasd a teljes hozzászólást!

  • Nézd meg a hibakonzolt, hogy ír-e valami hibát, amiből ki lehetne indulni.
    Mutasd a teljes hozzászólást!
  • Hibát nem ír, és igazából jól is működik a js script, és a function se működik igazából rosszul, csak egyszerűen cseszik bevinni a bbcodot a szöveges mező részbe. Ez az egyetlen egy problémám lenne.
    Mutasd a teljes hozzászólást!
  • hol van a nyitó és záró <form> tag?
    Mutasd a teljes hozzászólást!

  • print("<form method=post action=?action=post>\n"); if ($newtopic) print("<input type=hidden name=forumid value=$id>\n"); else print("<input type=hidden name=topicid value=$id>\n"); // begin_table(); if ($newtopic) print("<tr><td class=rowhead>Téma címe</td>" . "<td align=left style='padding: 0px'><input type=text size=100 maxlength=$maxsubjectlength name=subject " . "style='border: 0px; height: 19px'></td></tr>\n"); /* print("<tr><td class=rowhead>Téma leírás</td>" . "<td align=left style='padding: 0px'><input type=text size=100 maxlength=$maxsubjectlength name=sub" . "style='border: 0px; height: 19px'></td></tr>\n"); */ if ($quote) { $postid = $_GET["postid"]; if (!is_valid_id($postid)) die; $res = mysql_query("SELECT posts.*, login.usr FROM posts LEFT JOIN login ON posts.userid = login.id WHERE posts.id=$postid") or sqlerr(__FILE__, __LINE__); if (mysql_num_rows($res) != 1) stderr("Hiba", "Nincs ilyen hozzászólás ezzel az ID-vel."); $arr = mysql_fetch_assoc($res); } print("<tr><td class=rowhead>Hozzászólás a $subject témába</td><td align=left style='padding: 0px'></td>"); textbbcode("compose","body",($quote?(("[quote=".htmlspecialchars($arr["usr"])."]".htmlspecialchars(unesc($arr["body"]))."
    ")):""));     print("<tr><td colspan=2 align=center><input type=submit class=btn value='".Mehet."'></td></tr>\n");     print("</td></tr>");    end_table();     print("</form>\n");
    Mutasd a teljes hozzászólást!
  • Nah megvan a hiba:

    E helyett
    print("<form method=post action=?action=post>\n");

    Ez kell
    print("<form name=compose method=post action=?action=post>\n");
    Logikába mostmár értem hogy miért, csak efelett átsiklott a szemem... Köszönöm azért a segítséget.
    Mutasd a teljes hozzászólást!
  • nincs mit.
    Mutasd a teljes hozzászólást!
Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd