obiwan1973: Kopieren von Sonderzeichen mit JS

Hallo zusammen,

ich habe hier eine Funktion, um zwei Eingabefelder, wie soll ich sagen - nicht zu synchronisieren, aber ich möchte mit Ausführung einer bestimmten JS-Funktion den Inhalt von Feld 2 verändern.

Kopfschmerzen bereitet mir dabei der \

Wenn ich einen \ in Feld 1 nach Feld 2 schaufeln will, um ihn dort zu einem anderen, bereits vorhandenen String zu "addieren", wie müsste ich das machen.

So geht es jedenfalls nicht: Siehe Beispiel. Habe es versucht.

  
  
var status = document.getElementById('input_status').value;  
  
status = status.replace(/\/g, '\\');  
  
document.getElementById('input_headline').value = document.getElementById('input_headline').value + ' ' + '(' + status + ')';  
  

Kriege ich das irgendwie hin?

Gruß aus dem nebeligen Sachsenheim

Thomas

  1. Wenn ich einen \ in Feld 1 nach Feld 2 schaufeln will, um ihn dort zu einem anderen, bereits vorhandenen String zu "addieren", wie müsste ich das machen.

    Jo, ganz einfach hinzufügen: http://jsfiddle.net/2gNe5/

    MfG
    bubble

    --
    If "god" had intended us to drink beer, he would have given us stomachs. - David Daye
  2. Hallo,

    status = status.replace(//g, '\');

    Was soll diese Zeile erreichen?

    Erst einmal ist hier ein Syntaxfehler. Es müsste zumindest /\/g lauten, falls du einen Backslash matchen willst.

    Allerdings wäre string.replace(/\/g, '\') überflüssig, denn das würde alle jeden Backslash durch einen Backslash ersetzen. Der Ausgabestring wäre also gleich dem Eingabestring.

    Bis auf diesen Fehler scheint der Code in Ordnung zu tun. Ich weiß allerdings nicht, ob er auch das tut, was du beabsichtigst…

    Was hast du genau vor? Das wird mir aus deiner Beschreibung nicht ganz klar.

    Mathias

  3. Hallo Ihr beiden,

    erst einmal schönen Dank für das Feedback.

    Also, inhaltlich sieht das so aus, dass ich eine PHP-Seite habe, die ganz zu Beginn geladen wird. Sie enthält einen sogenannten "Titel", das ist einfach ein Beschreibungstext, und dahinter in Klammern einen "Status", ebenfalls ein Text.

    So, jetzt kann es sein, dass sich während des Arbeitens mit der Anwendung, der Titel und/oder der Status ändert. Das Schreiben dieser Änderungen in der Datenbank geschieht an einer anderen Stelle und funktioniert mit PHP wunderbar.

    Nur eben an dieser oben genannten Stelle muss ich den Titel und den Status mit JS aktualisieren. Und da kann es eben passieren, dass der neue Titel (durch den User eingegeben) einen \ enthält (oder auch einen /, eigentlich kann da alles mögliche drin sein).

    Hier mein alter Originalcode, bei dem das Thema Sonderzeichen nicht berücksichtigt ist:

      
      
    function funct_generate_new_headline()  
    {  
       var titel 	        = 	document.getElementById('input_titel').value;  
       //  
       new_headline 	= 	'Supportfall ' +									document.getElementById('input_casenummer').value +  
    				' : ' +										        titel.substring(0, 50) +							        '  (Status: ' + 									document.getElementById('input_status').value +  
    				')';  
       //  
       document.getElementById('input_headline').value = new_headline;  
    }  
      
    
    

    So, es geht jetzt also darum, dass ich zwei JS-Strings mit JS zusammenfügen muss, und diese beiden Strings können also auch " oder ' oder / oder \ enthalten.

    Es geht also um das Maskieren von den o.g. Sonderzeichen mit JS.

    Wie gesagt, das Thema PHP ist komplett außen vor, das passiert alles an einer völlig anderen Stelle und funktioniert einwandfrei.

    Irgendwelche Ideen?

    Gruß aus Sachsenheim

    Thomas

    1. Hi,

      Nur eben an dieser oben genannten Stelle muss ich den Titel und den Status mit JS aktualisieren. Und da kann es eben passieren, dass der neue Titel (durch den User eingegeben) einen \ enthält (oder auch einen /, eigentlich kann da alles mögliche drin sein).

      das ist aber kein Problem, wenn diese Zeichen in einem String vorkommen, den du aus einem Eingabefeld liest.

      So, es geht jetzt also darum, dass ich zwei JS-Strings mit JS zusammenfügen muss, und diese beiden Strings können also auch " oder ' oder / oder \ enthalten.

      Spielt keine Rolle. Die Sonderbehandlung dieser Zeichen ist nur dann relevant, wenn sie in einer Stringkonstanten im Quelltext stehen. Wenn sie schon als Variableninhalt vorliegen (etwa als value-Eigenschaft eines Textfelds), brauchst du keine weiteren Maßnahmen zu treffen.

      Ciao,
       Martin

      --
      The other line moves faster. (from Murphy's Law)
      Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
      1. Hallo Martin,

        das, was Du sagst, stimmt einfach nicht: JS wirft aus dem String

        123456789 und ' und " und / und \ und blabla

        den \ weg. Es ist nun mal so. Ich will Deine Fähigkeiten wirklich nicht in Frage stellen, aber das hier ist Fakt, ich habe es genau vor mir!

        Was soll ich jetzt nur machen?

        Thomas

        1. das, was Du sagst, stimmt einfach nicht: JS wirft aus dem String
               123456789 und ' und " und / und \ und blabla
          den \ weg. Es ist nun mal so.

          Das ist kein normales Verhalten von Javascript.

          Ich will Deine Fähigkeiten wirklich nicht in Frage stellen, aber das hier ist Fakt, ich habe es genau vor mir!
          Was soll ich jetzt nur machen?

          Zeig uns mal, was du genau vor dir hast; bei deinen vereinfachten Darstellung des Problems geht die Ursache flöten.

          MfG
          bubble

          --
          If "god" had intended us to drink beer, he would have given us stomachs. - David Daye