Wenn man etwas schreibt, geschweifte Klammern drum setzten?

2 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Muss der Nutzer denn diese geschweiften Klammern sehen? Wenn nicht, kannst du sie mit PHP bei Empfang der Daten ergänzen:

<?php
  function startsWith($haystack, $needle) {
    $length = strlen($needle);
    return (substr($haystack, 0, $length) === $needle);
  }

  function endsWith($haystack, $needle) {
    $length = strlen($needle);
    return $length === 0 || (substr($haystack, -$length) === $needle);
  }

  if (isset($_POST["someKey")) {
    // filter data

    if (!startsWith($data, "{")) {
      $data = "{".$data;
    }

    if (!endsWith($data, "}")) {
      $data = $data."}";
    }
  
    // ...
}

Ansonsten mit JavaScript, bei Klick auf den Senden-Button:

document.getElementById("idOfSubmitButton").addEventListener("click", function() {
  var textarea = document.getElementById("idOfTextAreaElement");

  if (!this.value.startsWith("{")) {
    textarea.value = "{" + textarea.value;
  }

  if (!this.value.endsWith("}")) {
    textarea.value = textarea.value + "}";
  }
});

Oder nach Änderung der Textarea:

document.getElementById("idOfTextAreaElement").addEventListener("change", function() {
  if (!this.value.startsWith("{")) {
    this.value = "{" + textarea.value;
  }

  if (!this.value.endsWith("}")) {
    this.value = textarea.value + "}";
  }
});

Ach entschuldige, ich habe deine Frage falsch gelesen.

Du solltest natürlich erst einmal wissen, was zuvor schon in dem Textfeld drin stand, das könntest du dir bspw. in einem data-Attribut zwischenspeichern. Beim Schreiben in das Textfeld muss dieser Wert nämlich natürlich wieder vorgefügt werden.

Hier ein praktisches Beispiel: https://jsfiddle.net/ysknr2ey/

Das Gleiche kannst du eigentlich später auch via PHP machen, eine Prüfung ist auf Serverseite wahrscheinlich eh notwendig.

1
@regex9

Vielen Dank! Ich löse es folgendermaßen mit php:

$a=explode("", $alt);
$b=explode("", $neu);
$i=0;
foreach($b AS $neu){
  if($neu != $a["".$i-$minus.""]){
    $b[$i]="{".$b[$i]."}";
    $minus+1;
  }

$i++;
}

foreach($b AS $neu)
{
$endstring.=$neu;
}

Es reicht auch, wenn jeder neue Buchstabe mit geschweiften klammern "umringt" wird. Vielen Dank, auf die Idee wäre ich ohne dich nie gekommen!

0

let a = '{' + $(element).val() + '}';
$(element).html(a);

jquery Methode

Das ist ECMA6. Hierbei sollte der Fragesteller beachten, dass das derzeit nicht in allen Browsern funktionieren wird.

1

Was möchtest Du wissen?