Mehrzeilige Texteingabefelder

In einem mehrzeiligen Texteingabefeld werden ein String als Wert und ein String als Text gespeichert. Der Wert ist immer ein gültiger String. Der Text kann ein beliebiger String sein, der in den Editor eingegeben wurde. Im Gegensatz zu einem Texteingabefeld unterstützt dieses Feld auch Zeilenumbrüche, die im Editor eingegeben werden.

Mehrzeiliges Texteingabefeld

Mehrzeiliges Texteingabefeld bei geöffnetem Editor

Mehrzeiliges Texteingabefeld in minimiertem Block

Erstellung

JSON

{
  "type": "example_multilinetextinput",
  "message0": "multiline text input: %1",
  "args0": [
    {
      "type": "field_multilinetext",
      "name": "FIELDNAME",
      "text": "default text\n with newline character",
      "spellcheck": false
    }
  ]
}

JavaScript

Blockly.Blocks['example_multilinetextinput'] = {
  init: function() {
    this.appendDummyInput()
        .appendField("multiline text input:")
        .appendField(new Blockly.FieldMultilineInput('default text\n with newline character'),
            'FIELDNAME');
  }
};

Der mehrzeilige Texteingabekonstruktor übernimmt einen optionalen Wert und einen optionalen validator. Der Wert sollte in einen String umgewandelt werden. Im Fall von null oder undefined wird ein leerer String verwendet.

In der JSON-Definition können Sie auch die Option spellcheck festlegen.

Serialisierung

JSON

Der JSON-Code für ein mehrzeiliges Texteingabefeld sieht so aus:

{
  "fields": {
    "FIELDNAME": "line1\nline2"
  }
}

Dabei ist FIELDNAME ein String, der auf ein mehrzeiliges Texteingabefeld verweist, und der Wert ist der Wert, der auf das Feld angewendet werden soll. Der Wert folgt denselben Regeln wie der Konstruktorwert.

XML

Der XML-Code für ein mehrzeiliges Texteingabefeld sieht so aus:

<field name="FIELDNAME">line1&amp;#10;line2</field>

Dabei enthält das Attribut name des Felds einen String, der auf ein mehrzeiliges Texteingabefeld verweist, und der innere Text ist der Wert, der auf das Feld angewendet werden soll. Der innere Textwert folgt denselben Regeln wie der Konstruktorwert.

Anpassbare

Rechtschreibprüfung

Mit der Funktion setSpellcheck können Sie festlegen, ob für das Feld eine Rechtschreibprüfung für den Eingabetext durchgeführt werden soll.

Texteingabefelder mit und ohne Rechtschreibprüfung

Die Rechtschreibprüfung ist standardmäßig aktiviert.

Dies gilt für einzelne Felder. Wenn Sie alle Felder ändern möchten, ändern Sie das Attribut Blockly.FieldMultilineInput.prototype.spellcheck_.

Texteingabevalidierung erstellen

Der Wert eines mehrzeiligen Texteingabefelds ist ein String. Daher müssen alle Validatoren einen String akzeptieren und einen String, null oder undefined zurückgeben.

Hier ist ein Beispiel für eine Validierung, die alle „a“-Zeichen aus dem String entfernt:

function(newValue) {
  return newValue.replace(/a/gm, '');
}