phillip: java script vorschau - addslashes ?!

hallo!

ich habe eine news vorschau gebaut, die sich in einem popup fenster öffnet.
ich lese dann die input felder aus und sende sie mit einem forumar mit hidden feldern an den server um sie mit php verwenden zu können.

<?php

if (!isset($_POST["head"]))
  {
   ?>
   <form action="preview.php" method="post" name="formular">
   <script type="text/javascript">
   <!--
   var head = '';
   head = window.opener.document.getElementById('head').value;
   document.write('<input type="hidden" name="head" value="'+head+'">');
   document.formular.submit();
   -->
   </script>
   </form>
   <?php
  }
 else
  {
   //ausgabe
  }
?>

das funktioniert auch wunderbar. nur wenn meine input felder texte mit " (anführungsstrichen) enthalten bricht die ausgabe an der stelle ab.
als beispiel:

also aus zb.: der mann fährt mit einem "kaputten" auto

würde in der vorschau: der mann fährt mit einem

wen ich direkt im input selber "backslashe", also vor jeden anführungsstrich ein backslash hau (der mann fährt mit einem "kaputten" auto) funktioniert das.

ich brauch also irgendwie eine javascript function wie die addslashes in php.

die, die ich gefunden habe funktioniert leider nicht.

<script>
function addslashes(ch) {
ch = ch.replace(/\/g,"\\")
ch = ch.replace(/'/g,"\'")
ch = ch.replace(/"/g,"\"")
return ch
}

chaine = addslashes(chaine)
</script>

ich wäre euch dankbar, wenn ihr eine idee habt :)

phillip

  1. Hallo Phillip

      
    
    >    <!--  
    >    var head = '';  
    >    head = window.opener.document.getElementById('head').value;  
    >    document.write('<input type="hidden" name="head" value="'+head+'">');  
    >    document.formular.submit();  
    >    -->  
    
    

    würdest Du nicht über document.write() arbeiten, hättest Du dieses Problem nicht. Beschäftige Dich bitte mit node (und wenn es bis zum geht nicht mehr abwertskompatibel sein muß auch mit all), seinen Methoden und Eigenschaften.

    Gruß aus Berlin!
    eddi

    --
    Wer Rechtschreibfehler findet, darf sie behalten.
    1. würdest Du nicht über document.write() arbeiten, hättest Du dieses Problem nicht. Beschäftige Dich bitte mit node (und wenn es bis zum geht nicht mehr abwertskompatibel sein muß auch mit all), seinen Methoden und Eigenschaften.

      hmm ich check das leider nich so...kann mir nicht vllt jemand eine leicht und schnelle lösung nennen? :)

      1. Re:

        hmm ich check das leider nich so...kann mir nicht vllt jemand eine leicht und schnelle lösung nennen? :)

        ich gehe an dieser Stelle auch auf den Vorschalg von fastix ein:

        document.getElementById['formid'].InnerHTML='<input type="hidden" name="head" value="'+head+'">';
        // falls das Formular, aber das Formularelement noch nicht existiert

        Dieses wird an den selben Symptomen leiden, wie phillips jetziger Versuch. Es ist unerheblich, ob später <input type="hidden" name="head" value="der mann fährt mit einem "kaputten" auto"> via innerHTML oder document.write() eingefügt wird. Es stellt eine Verletzung der Regeln HTMLs dar. Auch ein escapen, wie es Joachim unter https://forum.selfhtml.org/?t=124096&m=799248 vorschlug, tut hier, außer Arbeitsleistung des Rechners zu beanspruchen, nichts erhebliches zur Sache.

        document.forms['formid'].elements['elementid'].value=head;
        // falls das Formular und Formularelement existiert

        Dies wäre also auch noch ein gangbarer Weg. Dazu muß voher das Element <input> hartcodiert ausgegeben werden. Die Zuweisung sollte dann mittels onLoad() nach dem vollständigen Laden des Dokuments bewerkstelligt werden.

        Gruß aus Berlin!
        eddi

        --
        Wer Rechtschreibfehler findet, darf sie behalten.
  2. Hi,

    ich wäre euch dankbar, wenn ihr eine idee habt :)

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
            "http://www.w3.org/TR/1999/REC-html401-19991224/loose.dtd">
    <html>
    <head>

    <script type="text/javascript">
    var x =  'hier geht "schöne" Sachen';
    x =  escape(x);
    </script>

    </head>
    <body>
    <script type="text/javascript" language="javascript1.2">document.write(unescape(x))</script>
    </body>
    </html>

    hth

    Gruesse, Joachim

    --
    Am Ende wird alles gut.